我有这段代码:
#include <iostream>
class foo
{
public:
foo(int yy){y = yy;}
void f(int x){std::cout<<x;}
private:
int y;
};
void main()
{
foo* obj = new foo(123);
void (foo::*func)(int) = &foo::f;
//how do I call func with obj as this?
delete obj;
}
这可能吗?
答案 0 :(得分:3)
你称它为:
(obj->*func)(42);
由于“应用函数调用”优先于取消引用-PTM ->*
运算符,因此需要第一组括号。
您还可以使用std::bind
:
std::function<void(int)> my_f = std::bind(func, obj, std::placeholders::_1);
my_f(43);