参见英文答案 >
Undefined symbols “vtable for …” and “typeinfo for…”?5个
我正在处理C中的继承.我想编写一个程序来加减两个数组.继承我的代码:
我正在处理C中的继承.我想编写一个程序来加减两个数组.继承我的代码:
#include <iostream> #include <cmath> #include <sstream> using namespace std; class root { protected : int size; double *array; public : virtual ~root() {} virtual root* add(const root&) = 0; virtual root* sub(const root&) = 0; virtual istream& in(istream&,root&) = 0; virtual int getSize() const = 0; virtual void setSize(int); virtual int getAt(int) const = 0; }; class aa: public root { public : aa(); aa(int); aa(const aa&); root* add(const root& a); root* sub(const root& a); istream& in(istream&,root&){} int getSize() const; void setSize(int); int getAt(int) const; }; class bb: public root { public: bb() { } bb(const bb& b) { } root* add(const root& a); root* sub(const root& a); istream& in(istream&,root&){} int getSize() const{} void setSize(int){} int getAt(int) const{} }; aa::aa() { size = 0; array = NULL; } aa::aa(int nsize) { size = nsize; array = new double[size+1]; for(int i=0; i<size; i++) array[i] = 0; } root* aa::add(const root& a) { for (int i=0; i<a.getSize(); i++) array[i] += a.getAt(i); return new aa(); } root* aa::sub(const root& a) { } int aa::getSize() const { return size; } void aa::setSize(int nsize) { size = nsize; array = new double[size+1]; for(int i=0; i<size; i++) array[i] = 0; } int aa::getAt(int index) const { return array[index]; } root* bb::add(const root& a) { return new bb(); } root* bb::sub(const root& a) { } int main(int argc,char **argv) { }
但我有一个奇怪的错误:
/home/brian/Desktop/Temp/Untitled2.o||In function `root::~root()':| Untitled2.cpp:(.text._ZN4rootD2Ev[_ZN4rootD5Ev]+0xb)||undefined reference to `vtable for root'| /home/brian/Desktop/Temp/Untitled2.o||In function `root::root()':| Untitled2.cpp:(.text._ZN4rootC2Ev[_ZN4rootC5Ev]+0x8)||undefined reference to `vtable for root'| /home/brian/Desktop/Temp/Untitled2.o:(.rodata._ZTI2bb[typeinfo for bb]+0x8)||undefined reference to `typeinfo for root'| /home/brian/Desktop/Temp/Untitled2.o:(.rodata._ZTI2aa[typeinfo for aa]+0x8)||undefined reference to `typeinfo for root'| ||=== Build finished: 4 errors,0 warnings ===|
不知道他们来自哪里,现在不知道如何’修复’他们.提前致谢;)