什么" vtable for * Class *"错误意味着什么?

时间:2015-12-21 22:05:07

标签: c++ eclipse

片刻之前我正在编写一些东西......一切顺利,直到编译器给我这个错误:

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一起工作)?谢谢!

1 个答案:

答案 0 :(得分:1)

您未能提供其中一个成员函数的定义,特别是您的编译器用于选择转换单元来存储vtable的成员函数的定义。

使用gcc,这将是第一个非内联成员函数。

定义所有成员函数应解决问题。