片刻之前我正在编写一些东西......一切顺利,直到编译器给我这个错误:
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
(我很抱歉,但是它是意大利语,你知道......它说"对于Persona&#34的未定义的vtable引用;)
这是感兴趣的标题文件的代码(这些行用">>"表示):
#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一起工作)?谢谢!
答案 0 :(得分:1)
您未能提供其中一个成员函数的定义,特别是您的编译器用于选择转换单元来存储vtable的成员函数的定义。
使用gcc,这将是第一个非内联成员函数。
定义所有成员函数应解决问题。