我正在为我的一门课程使用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'
谢谢
就像eyllanesc在评论中说的那样,您不应提供信号的定义。仅应声明信号,并且Qt meta-object compiler(moc)将为其生成所需的定义。因此:
...
signals:
void valueChanged(int newValue);
...