QThreadPool调用父类QRunnable的纯虚拟函数
QThreadPool calls pure virtual function of parent class QRunnable
运行时,我收到错误消息:"调用了纯vitual函数"。
QThreadpool似乎调用了父类QRunnable
的pure virtual void run()
,而不是派生类Bm
中的void run()
。奇怪的是,如果我尝试用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()
将确保线程被执行。
相关文章:
- C++无法定义虚拟函数 OUTER 类和头文件
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 类型擦除的std::function与虚拟函数调用的开销
- 重写虚拟函数和继承
- 用纯虚拟函数兜圈子
- 为什么使用存储在虚拟方法表中的地址调用虚拟函数的函数会返回垃圾?
- 禁止子函数调用父级的抽象(或虚拟)函数
- 无法在子类中使用虚拟函数C++
- 无法在派生对象上运行虚拟函数
- 我可以调用从 main() 覆盖的虚拟函数吗?
- 在 C++ 中将函数获取和设置为虚拟函数
- 使用在堆栈上创建的对象调用虚拟函数
- 为什么在这种情况下不调用我的虚拟函数实现?
- 在C++中使虚拟函数私有化
- 模板继承类中的虚拟函数
- 为什么构造函数的虚拟函数调用有时有效,但其他调用却无效
- doxygenc++虚拟函数和实现
- 如何从派生类函数中调用虚拟函数