我正在使用 C++。
我试图制作一个映射到类方法。
即:
map<int,void*> mapIdToMethod;
方法:
void MyClass::MyMethod(void*);
我尝试了什么:
mapIdToMethod.insert(make_pair(1, (void*)&MyClass::MyMethod));//Not compiled
mapIdToMethod.insert(make_pair(1, (void*)&MyClass::MyMethod()));//Not compiled
那么,最好的原因是什么以及如何做?
谢谢!
*我无法使用Boost
最佳答案
不需要使用void*
,直接使用成员函数指针即可。
std::map<int, void (MyClass::*)(void*)> mapIdToMethod;
顺便说一句:您对 std::map::insert
的使用是错的。你可以
mapIdToMethod.insert({1, &MyClass::MyMethod});
或使用 std::make_pair
mapIdToMethod.insert(std::make_pair(2, &MyClass::MyMethod));
编辑
注意你需要一个实例来调用它,比如:
MyClass mc;
(mc.*mapIdToMethod.at(1))(nullptr);
关于c++ - 映射到方法 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36468982/