我试图这样做,但它不起作用 这是我的错误:
必须使用'。'或' - > '来调用指向成员的指针功能 '((test *)this) - > test :: mapping.std :: map< _Key,_Tp,_Compare, _Alloc> :: operator [],void(test :: *)(int),std :: less>,std :: allocator,void(test :: *)(int)> > >(((常量 key_type )(& str)))(...)',例如'(... - > * ((test *)this) - > test :: mapping.std :: map< _Key,_Tp,_Compare, _Alloc> :: operator [],void(test :: *)(int),std :: less>,std :: allocator,void(test :: *)(int)> > >(((常量 key_type )(& str))))(...)'
test.h:
#include....
using namespace std;
class test
{
public:
std::map<std::string, void(test::*)(int)> mapping;
void Add(int);
};
test.cpp:
test::test()
{
mapping["Add"]=&test::Add;
string str = "Add";
this.*mapping[str](3);// dosnt work!!!!
}
void test::Add(int a)
{
cout<<a<<endl;
}
Dosnt的工作,请帮助我。
答案 0 :(得分:4)
由于this
是指针,因此您需要使用->*
而不是.*
。此外,还需要一些括号。
(this->*mapping[str])(3);