调用start()方法时,QThread的子类会抛出undefined refenrence错误

时间:2013-07-04 22:28:19

标签: multithreading qt

我有以下代码设置 -

在文件 testthread.h

class test_thread :public QThread
{
    Q_OBJECT
public:
    void start();
};

在cpp文件中

test_thread *t = new test_thread;
t->start();

执行上述代码时,我收到错误 -

error: undefined reference to test_thread::start()

我不明白出了什么问题。调用QThread对象的start()方法不显示任何错误,但是当我将QThread子类化时,它确实存在。对此有任何帮助或建议都很棒!

谢谢:)

1 个答案:

答案 0 :(得分:2)

您需要从头文件中删除void start();。如果源文件中存在start实现,则还需要将其删除。 start方法不应该重新实现。

您可能希望重新实现run虚拟方法。如果是,请将void run()添加到标头中,并在源文件中添加适当的test_thread::run() { ... }实现。

请注意,在大多数情况下,QThread不应该是子类。