未定义的引用`typeinfo for class' [英] undefined reference to `typeinfo for class'

查看:2124
本文介绍了未定义的引用`typeinfo for class'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

g ++未定义对typeinfo的引用

未定义符号vtable for…”和" typeinfo for…&rdquo ;?

我无法使用类。

class Accel {
public:
    virtual void initialize(void);
    virtual void measure(void);
    virtual void calibrate(void);
    virtual const int getFlightData(byte);
};
class Accel_ad : public Accel {
public:
    Accel_ad() : Accel(){}
    void initialize(void) {/*code code code...*/}
    void measure(void) {/*measure code*/}
    const int getFlightData(byte axis){/*getting data*/}
    void calibrate(void) {
        int findZero[FINDZERO];
        int dataAddress;
        uint8_t  data[2];
        for (byte calAxis = XAXIS; calAxis < ZAXIS; calAxis++) {
            if (calAxis == YAXIS) dataAddress = 0x32;
            if (calAxis == XAXIS) dataAddress = 0x34;
            if (calAxis == ZAXIS) dataAddress = 0x36;
            for (byte i=0; i<FINDZERO; i++) {
                readReverseWordI2C(dataAddress,data);
                findZero[i] = (data[1] << 8) | (data[0]);;
                Delay_ms(10);
            }
            accelZero[calAxis] = findMedian(findZero, FINDZERO);
        }

        // replace with estimated Z axis 0g value
        accelZero[ZAXIS] = (accelZero[XAXIS] + accelZero[PITCH]) / 2;
        // store accel value that represents 1g
        measure();
        accelOneG = -accelData[ZAXIS];
    }

main.cpp

Accel_ad accel;//all ok
accel.initialize();//all ok
accel.calibrate();//ERROR: undefined reference to `typeinfo for Accel'
accel.measure();//All okey

谁知道错误?

推荐答案

您必须为基类中的虚拟函数提供定义或声明为pure:

You must either provide a definition for virtual functions in your base class or declare them pure:

class Accel {
public:
   virtual void initialize(void) = 0;        //either pure virtual
   virtual void measure(void) = 0; 
   virtual void calibrate(void) {};          //or implementation 
   virtual const int getFlightData(byte) {};
};

这篇关于未定义的引用`typeinfo for class'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆