C++: 存储& 在函数指针的向量中调用函数指针。

问题描述 投票:0回答:1

我有一个场景,如下代码。我试图

  1. 将一个C++成员函数的地址存储在一个函数指针的向量中。

  2. 使用这个函数指针向量访问一个C++成员函数。

我能够添加函数,但我不能调用它们。我得到的错误是

错误:必须使用'.'或'->'来调用指向成员函数的指针。

class allFuncs {
     private:
        std::vector<void *(allFuncs::*)(int)> fp_list; // Vector of function pointers

       void func_1(int a) {
           // some code
        }

       void func_2(int a) {
           // some code
        }

        void func_3() {
           // STORING THE FUNCTION POINTER INTO The VECTOR OF FUNCTION POINTERS
           fp_list.push_back(&func_2);
           fp_list.push_back(allFuncs::func_1);      
        }

        func_4() {
          // Calling the function through the function pointer in vector
          this->*fp_list.at(0)(100);  // this does not work 
        }
}
c++ c++11 pointers function-pointers member-function-pointers
1个回答
1
投票

你需要使用

(this->*fp_list.at(0))(100)

来调用向量中的函数。 当你执行

this->*fp_list.at(0)(100)

函数调用(该 (100) 部分)必然是 fp_list.at(0) 所以基本上你有

this->*(fp_list.at(0)(100))

这将无法工作。在函数指针访问的周围加上括号就可以解决这个问题。this->*fp_list.at(0) 成为要调用的函数,然后是 (100) 在该函数上使用。

© www.soinside.com 2019 - 2024. All rights reserved.