Qt 尽管没有虚函数,但类对vtable的未定义引用
我正在为我的一个类练习QT,尽管没有虚拟函数,我还是不断地获得对vtable for class的Qt 尽管没有虚函数,但类对vtable的未定义引用,qt,inheritance,polymorphism,vtable,qobject,Qt,Inheritance,Polymorphism,Vtable,Qobject,我正在为我的一个类练习QT,尽管没有虚拟函数,我还是不断地获得对vtable for class的未定义引用。我四处寻找了一个解决方案,但似乎它们都至少有一个函数被声明为虚拟函数。代码如下: class C : public QObject { Q_OBJECT public: C(int value) { value_ = 0; } int getValue() const { return value_; } public slots: void setValue(i
未定义引用。我四处寻找了一个解决方案,但似乎它们都至少有一个函数被声明为虚拟函数。代码如下:
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'
谢谢就像eyllanesc在评论中所说的,您不应该提供信号的定义。
仅应声明信号,Qt(moc)将为其生成所需的定义。
因此:
打字错误:将void-valueChanged(int-newValue){}
更改为void-valueChanged(int-newValue)代码>。这些信号没有实现,它们只是定义的。谢谢你的回复,很抱歉这么晚才回复。我试图更改它,但它仍然给我一个
LNK2001:unresolved external symbol“public:virtual void*\uu这个调用C
表示感谢,我不知道。但是它仍然给我一个`LNK2001:unresolved external symbol“public:virtual void*\uu这个调用C`错误
...
signals:
void valueChanged(int newValue);
...