[英]C++ Undefined reference to vtable when adding “using namespace std;”
#include <QGraphicsScene>
using namespace std;
class Object
{
public:
Object(){};
virtual ~Object(){};
virtual void draw(QGraphicsScene * s, int x, int y){};
virtual string get();
};
我收到一條錯誤消息:“對象的vtable的未定義引用”。 該錯誤同時在構造函數和析構函數上發生。 當我刪除“ using namespace std;”時,錯誤消失了。 線。 如何在不刪除該行的情況下解決此錯誤? 還是提供使用字符串變量類型的另一種方法?
發生錯誤是因為在您的情況下,已聲明但未定義虛擬方法
virtual string get();
在代碼的某處,您要告訴編譯器通過實例化為Object
發出vtable,例如
Object* o = new Object();
您必須定義它,或者如果您想讓子類實現它,則將其顯式標記為純:
virtual string get() = 0;
在這兩種情況下(將其設為未實現或將其標記為純),您將無法直接實例化Object
實例,因為該對象的實現不完整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.