Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 尽管没有虚函数,但类对vtable的未定义引用_Qt_Inheritance_Polymorphism_Vtable_Qobject - Fatal编程技术网

Qt 尽管没有虚函数,但类对vtable的未定义引用

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

我正在为我的一个类练习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(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);
...