C++ 使用函数指针调用成员函数时出错 B类 { 公众: void fun(int i){} }; typedef std::函数fPtr; C类 { 公众: void fun1(fptr句柄){} }; 甲级 { 公众: B对象; C目标1; void temp() { object1.fun1(&B::fun); } };

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

我试图按给定方式调用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()
{
 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));