覆盖线程函数c++

Override thread functions c++

本文关键字:c++ 函数 线程 覆盖      更新时间:2023-10-16

所以我有这个基类,它创建了一个线程,在构造时调用虚拟方法。这样设计是因为我只想让其他开发人员重写这个方法,而不是同时重写构造函数和这个方法。当我继承这个类时,我假设要调用的功能是override。但没有成功。下面是构造函数的代码

IOHandler::IOHandler(int refresh_rate)
{
    alarm_is_set = false;
    terminate_threads = false;
    init_complete = false;
    update_cycle_thread = std::thread (& IOHandler::update_cycle,
                                                        this,
                                                refresh_rate);
}

但是当我创建一个子类f.e。

class childClass: public IOHandler
{
      void update_cycle(int refresh_rate) override;
}

调用的函数是IOHandler::update_cycle,而不是覆盖,是否有可能做我想做的事情?关于

你不应该从构造函数中调用虚函数:对象还没有完全构造好,你的重写函数还不能从基类中调用。这就是std::thread接收函数对象作为参数的原因。另一种方法通常是在线程构造之后调用start()方法。