【发布时间】:2020-12-22 09:23:39
【问题描述】:
我有 CallProtector 类,它应该调用具有可变数量参数的方法,这些参数应该通过互斥锁保护调用,但我不知道如何使用它们的参数传递对象的方法。这是我到目前为止所拥有的:
class CallProtector
{
public:
template<typename F, typename ...Args>
void callProtectedMethod(F& lambda, Args... args)
{
std::lock_guard<std::mutex> guard(m_guard);
lambda(args);
}
private:
std::mutex m_guard;
};
我正在尝试这样使用它:
class Car
{
public:
void updateEngine(int engineModelType) {}
};
int main()
{
Car alfaRomeo;
CallProtector callProtector;
callProtector.callProtectedMethod(&Car::updateEngine, 10);
return 0;
}
但我有编译错误提示
no instance of function template "CallProtector::callProtectedMethod" matches the argument list
感谢任何帮助,在此先感谢。
【问题讨论】:
标签: c++ c++14 c++17 variadic-templates variadic-functions