QThreadPool 调用父classQRunnable 的纯虚函数

QThreadPool calls pure virtual function of parent class QRunnable

在运行期间,我收到错误消息:"pure vitual function called"。

QThreadpool 似乎调用父 class QRunnablepure virtual void run(),而不是在派生 class Bm 中关闭 void run()。 奇怪的是,如果我尝试使用 b_1.run(); 手动调用该函数,则在运行时没有问题。

这是我的 class 实现:

class Bm : public QRunnable
{ 
    public:
    void run()
    {
        test();
    }
    private:
         void test();
 };

这是我的主要功能发生错误的地方。

int main()
{  
    QThreadPool pool;
    pool.setMaxThreadCount(1);
    BM b_1;

    pool.start(&b_1);

    return 0;
}

我的问题:为什么 Qthreadpool 不使用 Bm::run() 而不是 QRunnble::run()

即使在 QThreadPool 调用 IRunnable::run() 之前,线程对象也会在超出 main() 函数作用域时被删除。在返回前使用 QThreadPool::waitForDone() 将确保线程正在执行。