What does “vtable for *Class*” error means?
本问题已经有最佳答案,请猛点这里访问。
几分钟前我在编一些东西…一切顺利,直到编译器给了我这个错误:
1 2 3 4 | C:\Users\presgiovanni\workspace\verbaleesami\Debug/../persona.h:24: riferimento non definito a"vtable for Persona" main.o: nella funzione"ZN7PersonaD2Ev": C:\Users\presgiovanni\workspace\verbaleesami\Debug/../persona.h:25: riferimento non definito a"vtable for Persona" collect2.exe: error: ld returned 1 exit status |
(对不起,不过是意大利语的,你知道…它表示"对角色vtable的未定义引用")。
这是感兴趣的头文件的代码(行用">>"表示):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #ifndef PERSONA_H_ #define PERSONA_H_ #include <iostream> using std::cout; using std::cin; using std::endl; using std::ostream; using std::istream; #include <string> using std::string; class Persona{ public: >> Persona(){;} >> virtual ~Persona() = default; virtual bool login(istream&); virtual ostream& print(ostream&); protected: string nome, cognome, nickname, password; }; #endif /* PERSONA_H_ */ |
有人能告诉我发生了什么事吗(我正在和Eclipse合作)?谢谢您!
未能提供其中一个成员函数的定义,特别是编译器用来选择要存储vtable的翻译单元的函数。
对于gcc,这将是第一个非内联成员函数。
定义所有成员函数应该可以解决这个问题。