你的代码不对呀,: error: undefined reference to `vtable for Worker'
时间: 2024-04-10 11:02:58 浏览: 100
非常抱歉,之前给出的代码确实存在问题。这是由于`Worker`类没有定义虚函数造成的,而QObject类需要至少一个虚函数来生成vtable。
以下是修正后的示例代码,添加了一个虚函数:
```cpp
#include <QCoreApplication>
#include <QObject>
#include <QThread>
#include <QDebug>
class Worker : public QObject
{
Q_OBJECT
public:
explicit Worker(QObject *parent = nullptr) : QObject(parent) {}
public slots:
void doWork()
{
qDebug() << "Worker thread ID: " << QThread::currentThreadId();
// 执行需要在新线程中执行的操作
}
virtual void dummy() {} // 添加一个虚函数
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread workerThread;
Worker worker;
worker.moveToThread(&workerThread);
QObject::connect(&workerThread, &QThread::started, &worker, &Worker::doWork);
workerThread.start();
return a.exec();
}
```
现在,`Worker`类中添加了一个名为`dummy`的虚函数。这样,就能够生成正确的vtable,并解决了编译时的错误。
请尝试使用这个修正后的代码。如果还有其他问题,请随时告诉我。
阅读全文