在运行期间,我收到错误消息:“调用了纯虚拟函数”。

QThreadpool似乎调用父类pure virtual void run()QRunnable,而不是派生类void run()中的Bm
奇怪的是,如果我想用b_1.run();手动调用该函数,则在运行时没有问题。

这是我上课的时间:

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()

最佳答案

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

09-08 11:38