#include <QGraphicsScene>
using namespace std;
class Object
{
public:
Object(){};
virtual ~Object(){};
virtual void draw(QGraphicsScene * s, int x, int y){};
virtual string get();
};
我收到错误提示“未定义对vtable for Object”的引用。构造函数和析构函数都会发生错误。当我删除“using namespace std;”时,错误消失了线。如何在不删除该行的情况下修复此错误?或者提供另一种使用字符串变量类型的方法?
答案 0 :(得分:1)
发生错误是因为在您的情况下声明了虚拟方法但未定义
virtual string get();
在代码中的某处,您告诉编译器通过实例化它来发出Object
的vtable,例如
Object* o = new Object();
您必须定义它,或者如果您想让子类实现它,请将其明确标记为纯:
virtual string get() = 0;
在这两种情况下(让它未实现或将其标记为纯),您将无法直接实例化Object
实例,因为该对象的实现不完整。