【问题标题】:What does "vtable for *Class*" error means? [duplicate]“*Class* 的 vtable”错误是什么意思? [复制]
【发布时间】:2016-03-28 02:00:23
【问题描述】:

不久前我正在编写一些东西......一切都很顺利,直到编译器给我这个错误:

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 的 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)?谢谢!

【问题讨论】:

    标签: c++ eclipse


    【解决方案1】:

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

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

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

    【讨论】:

    • 你就是那个男人!我忘了,因为这个类对我来说应该是一个抽象类,所以要初始化你所说的列出的成员函数。只是一个愚蠢的缺乏!谢谢!
    猜你喜欢
    • 2014-12-03
    • 2011-01-14
    • 1970-01-01
    • 2012-11-28
    • 2011-06-06
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多