如何调用传递给变量的对象方法?
class A {
public:
inline int f() {
return 1;
}
};
int main() {
A a;
int (A::*y)(); //'y' must be a method of 'A' class that returns 'int'
y = &A::f; //bind 'f' method
*y(); //how to invoke???
}
另一个thread将一个方法绑定到一个对象字段,它以这种方式调用(a.*(a.x))()
,但我找不到一种方法来对一个简单的变量做类似的事情。
答案 0 :(得分:2)
只需(a.*y)();
。您需要额外的parantheses使编译器在进行函数调用之前解析指向成员的指针。见operator precedence:
class A {
public:
inline int f() {
return 1;
}
};
int main() {
A a;
int (A::*y)(); //'y' must be a method of 'A' class that returns 'int'
y = &A::f; //bind 'f' method
(a.*y)();
}