我有这个模板化的成员" function“,它的参数是一个对象实例和这个对象的成员函数(就像一个包装器):
class Monitor
{
Monitor();
~Monitor();
template <typename O, typename F>
void (O object, F function)
{
object.function();
}
}如果我们有这样的类:
class Object
{
Object();
~Object();
function()
{
std::cout << "Do something" << std::endl;
};
}对此函数的调用将如下所示:
int main()
{
Monitor monitor;
Object object;
monitor.waitData(object, function);
return 0;
};这就是问题所在。如果我想调用一个运行在成员函数"waitData“上的线程,它应该如何编写?
int main()
{
Monitor monitor;
Object object;
// std::thread threadWait(monitor.waitData(object, function)) -> Obviously gets an error
std::thread threadWait(???????);
return 0;
};提前谢谢。
发布于 2021-03-06 08:37:49
您可以将其封装在lambda中:
std::thread threadWait([&]{
monitor.waitData(object, function);
});当然,需要考虑对象的生存期-在本例中,所有3个对象都是通过引用捕获的,这意味着它们需要在线程运行时保持不变。
https://stackoverflow.com/questions/66501221
复制相似问题