【发布时间】:2020-04-09 11:55:03
【问题描述】:
我正在为我的一门课程练习 QT,尽管没有虚拟功能,但我不断收到 Undefined reference to vtable for class。我四处寻找解决方案,但似乎他们都至少有一个被声明为虚拟的函数。代码如下:
class C : public QObject
{
Q_OBJECT
public:
C(int value) { value_ = 0; }
int getValue() const { return value_; }
public slots:
void setValue(int value){
if (value != value_) {
value_ = value;
emit valueChanged(value);
}
}
signals:
void valueChanged(int newValue){}
private:
int value_;
};
我不知道发生了什么。我尝试更改函数名称,以防它们与基类中的某些函数具有相同的名称,但它没有解决任何问题。这是错误:
/*path of file*/
error : undefined reference to `vtable for C'
谢谢
【问题讨论】:
-
错字:将
void valueChanged(int newValue){}更改为void valueChanged(int newValue);。信号没有被实现,它们只是被定义了。 -
感谢您的回复,很抱歉这么晚才回复。我尝试更改它,但它仍然给我
LNK2001: unresolved external symbol "public: virtual void * __thiscall C
标签: qt inheritance polymorphism vtable qobject