C如何将成员函数传递给函子参数?
作者:互联网
我正在使用TRI DDS-这是我尝试调用的函数的原型:
template<typename T , typename Functor >
dds::sub::cond::ReadCondition::ReadCondition (
const dds::sub::DataReader< T > & reader,
const dds::sub::status::DataState & status,
const Functor & handler
)
所以我有一个看起来像这样的类(省略了无关紧要的内容):
MyClass test{
public:
test(){... mp_reader = ...}; // not complete
start_reader()
{
dds::sub::cond::ReadCondition rc(*mp_reader,
dds::sub::status::DataState::any(),
do_stuff()); // This does not work
}
void do_stuff() {...}
private:
dds::sub::DataReader* mp_reader;
}
因此,我只是尝试传入函数do_stuff()..我知道这是行不通的,但是我不确定在什么地方代替const&函子参数.我可以传递成员函数吗? -如何指定类的实例?
我尝试在其中放置一个lambda并成功-但是我无法在lambda中访问mp_reader,因为它不在lambda的范围内.但是无论如何,我真的不想使用lambda,而我真的想使用一个函数(因此,最终我可能可以传入一个外部函数).
RTI DDS功能请参阅here.这是关于函子类型的说明:
“任何类型的实例都可以使用无参数的函数调用来调用(例如,如果f是Functor的实例,则可以调用f().)示例包括函数,覆盖operator()的类型和lambdas<< C 11>.返回类型必须为空”
解决方法:
您可以将lambda函数与捕获一起使用.
dds::sub::cond::ReadCondition rc(*mp_reader,
dds::sub::status::DataState::any(),
[this](){ this->do_stuff(); });
标签:member-functions,c,functor 来源: https://codeday.me/bug/20191014/1911655.html