关于c ++:“vtable for * Class *”错误是什么意思?

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,这将是第一个非内联成员函数。

定义所有成员函数应该可以解决这个问题。