还不行,error: undefined reference to `vtable for Worker'
时间: 2023-07-17 08:09:11 浏览: 183
非常抱歉,看起来你仍然遇到了关于`vtable`的问题。这个错误通常是由于未定义的虚函数引起的。
请确保在`Worker`类中至少有一个虚函数,以便生成正确的`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:
virtual void doWork()
{
qDebug() << "Worker thread ID: " << QThread::currentThreadId();
// 执行需要在新线程中执行的操作
}
};
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();
}
```
在上面的代码中,我们将`doWork`函数定义为虚函数,以确保生成正确的`vtable`。这样,你应该能够成功编译并执行多线程操作。
如果问题仍然存在,请提供更多的错误信息,以便我能够更好地帮助你解决问题。
阅读全文