我正在使用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 & functor
参数。我可以传递成员函数吗? - 如何指定类的实例?
我尝试在那里放一个lambda并且它有效 - 但是我无法在lambda中访问mp_reader,因为它不在lambda的范围内。但无论如何我不想使用lambda我真的想要使用一个函数(所以,最终我可以传入一个函数)。
请参阅here了解RTI DDS功能。以下是关于functor
类型的说法:
&#34; Any type whose instances that can be called with a no-argument function call (i.e. f(), if f is an instance of Functor). Examples are functions, types that override the operator(), and lambdas <<C++11>>. The return type has to be void
&#34;
答案 0 :(得分:4)
您可以将lambda函数与捕获一起使用。
dds::sub::cond::ReadCondition rc(*mp_reader,
dds::sub::status::DataState::any(),
[this](){ this->do_stuff(); });
答案 1 :(得分:0)
您可以使用df.iloc[team_A_id]['points].sum()
(请参阅http://en.cppreference.com/w/cpp/utility/functional/bind)
std::bind
另见How to directly bind a member function to an std::function in Visual Studio 11?