undefined reference to `typeinfo for IA' collect2: ld returned 1 exit status

来源:互联网 发布:p2p网络搭建 编辑:程序博客网 时间:2024/06/05 20:39
背景:c++工程,虚函数,继承,接口,代码如下:class IA{public:virtual void printa();};class CA:public IA{public:CA(int a){this->a = a;}~CA(){}public:void printa() {printf ("a=%d\n", a);}private:int a;};int main(int argc, char** argv) {IA* ia = new CA(5);ca->printa();delete ia;return 0;}编译结果如下:undefined reference to `vtable for IA'undefined reference to `typeinfo for IA'collect2: ld returned 1 exit status分析:1、在IA类中未定义涉及到虚表2、在CA类中未定义涉及IA类信息3、连接错误根据以上3点和代码,可以知道:1、如果IA是接口类型那么virtual void printa() = 0;2、如果IA是基类那么至少是virtual void printa(){}   而不能没有实现。解决:1、当做接口使用,IA类修改如下:virtual void printa() = 0;2、当做基类使用,IA类修改如下:virtual void printa(){}

0 0