C++ 使用函数指针调用成员函数时出错 B类 { 公众: void fun(int i){} }; typedef std::函数fPtr; C类 { 公众: void fun1(fptr句柄){} }; 甲级 { 公众: B对象; C目标1; void temp() { object1.fun1(&B::fun); } };
我试图按给定方式调用fun1(),但它给出了编译器错误。正确的称呼方式是什么?大概你想称呼这样的东西:C++ 使用函数指针调用成员函数时出错 B类 { 公众: void fun(int i){} }; typedef std::函数fPtr; C类 { 公众: void fun1(fptr句柄){} }; 甲级 { 公众: B对象; C目标1; void temp() { object1.fun1(&B::fun); } };,c++,C++,我试图按给定方式调用fun1(),但它给出了编译器错误。正确的称呼方式是什么?大概你想称呼这样的东西: Class B { public: void fun(int i){} }; typedef std::function<void(int)> fPtr; class C { public: void fun1(fptr handle){} }; class A { public: B object; C object1; void temp() { obj
Class B
{
public:
void fun(int i){}
};
typedef std::function<void(int)> fPtr;
class C
{
public:
void fun1(fptr handle){}
};
class A
{
public:
B object;
C object1;
void temp()
{
object1.fun1(&B::fun);
}
};
或者:
object1.fun1([this](int n){object.fun(n);});
object
和object1
确实是您可以想出的最好的名称,可以让示例变得清晰易懂,而且fPtr
也是一个非常容易混淆的名称,因为类型与指针完全不同。
object1.fun1(std::bind(&B::fun, &object, std::placeholders::_1));