C++ 如何从另一个成员函数调用成员函数指针?

C++ 如何从另一个成员函数调用成员函数指针?,c++,pointers,member-function-pointers,C++,Pointers,Member Function Pointers,我有一个类,它有一个存储成员函数指针的数据memeber。指针在不同的时间指向不同的成员函数。我想从另一个成员函数调用此函数指针。我该怎么做 class A { void (A::*fnPointer)() = nullptr; void callerMemberFunction(){ fnPointer = &A::someMemberFunction; // Store the function (*fnPointer)(); // I would li

我有一个类,它有一个存储成员函数指针的数据memeber。指针在不同的时间指向不同的成员函数。我想从另一个成员函数调用此函数指针。我该怎么做

class A {

  void (A::*fnPointer)() = nullptr;

  void callerMemberFunction(){
    fnPointer = &A::someMemberFunction;  // Store the function
    (*fnPointer)(); // I would like to call the function. How can i do?
  }

  void someMemberFunction(){ ... }

}

   

您需要指定调用函数的对象:

(this->*fnPointer)();

您需要指定调用函数的对象:

(this->*fnPointer)();

(*this.*fnPointer)()我知道这并不能回答这个问题,因为您专门询问函数指针,不过更现代的方法是使用
std::function fn
作为成员变量,然后为其分配lambda:
fn=[this](){someMemberFunction();}
并使用
fn()
简单地调用它
std::function
是STL的一部分,可以使用
#include
@DavidWright将其包括在内——在许多情况下,
std::function
增加了开销,但没有相应的好处
std::function
设计用于管理阻抗失配,例如,提供一个可以使用
long
类型的参数调用的接口,并应用一个接受
int
double
或任何其他可以转换为
long
的底层函数。如果不需要这种转换,就不需要
std::function
(*this.*fnPointer)()我知道这并不能回答这个问题,因为您专门询问函数指针,不过更现代的方法是使用
std::function fn
作为成员变量,然后为其分配lambda:
fn=[this](){someMemberFunction();}
并使用
fn()
简单地调用它
std::function
是STL的一部分,可以使用
#include
@DavidWright将其包括在内——在许多情况下,
std::function
增加了开销,但没有相应的好处
std::function
设计用于管理阻抗失配,例如,提供一个可以使用
long
类型的参数调用的接口,并应用一个接受
int
double
或任何其他可以转换为
long
的底层函数。如果不需要这种转换,就不需要
std::function