获取指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class A { public: static void staticmember() { cout << "static" << endl; } void nonstatic() { cout << "nonstatic" << endl; } virtual void virtualmember() { cout << "virtual" << endl; }; }; int main() { A a; void (*ptrstatic)() = &A::staticmember; void (A::*ptrnonstatic)() = &A::nonstatic; void (A::*ptrvirtual)() = &A::virtualmember; ptrstatic(); (a.*ptrnonstatic)(); (a.*ptrvirtual)(); }
|
在map中使用指针
直接使用对应类型也是可以的,比如:
1
| map<string, void (A::*)()> zeroParmsFuns;
|
不过为了方便起见,还是自定义类型吧
1 2
| typedef void (A::*func)(); map<string, func> zeroParmsFuns;
|
使用迭代器来遍历map,funcName是函数名,对应map的key
1 2 3 4 5
| map<string, func>::iterator iter = zeroParmsFuns.find(funcName); if (iter != zeroParmsFuns.end()) { (this->*(iter->second))(); }
|
参考
C++中怎么获取类的成员函数的函数指针?
C++ 类内函数指针的使用的使用