【发布时间】:2014-08-20 18:04:38
【问题描述】:
我正在尝试将虚拟方法传递给线程类的构造函数(C++ 线程)。
翻遍后,我只能传递一个非虚拟成员方法。
我的基类A有一个start方法如下:
void A::start() {
thread(&A::runnable,A()); // <--- What do I change here?
}
runnable 函数是虚函数,也在派生类B 中实现。 我在派生类 B 中覆盖了 runnable。
然后我在 B 上调用 start。
显然,并且不受欢迎的是,start 函数使用在 A(而不是 B)中实现的 runnable,因为它在 A::start 中明确定义。 有没有办法让runnable函数动态绑定?
我想过使用模板和其他一些创造性的解决方案。 (如果没有真正的解决方案,我最终会在 B 中实现 start)
任何帮助将不胜感激。
【问题讨论】:
-
@πάνταῥεῖ 在这种情况下使用
std::bind不会改变任何东西。
标签: c++ inheritance