QThreadPool调用父类QRunnable

时间:2016-04-05 14:24:04

标签: c++ qt pure-virtual

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

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

这是我的班级实施:

b_1.run();

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

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

我的问题:为什么Qthreadpool在int main() { QThreadPool pool; pool.setMaxThreadCount(1); BM b_1; pool.start(&b_1); return 0; } 上使用Bm::run()

1 个答案:

答案 0 :(得分:1)

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