函数指针 - 显式调用括号前的表达式必须具有(指向)函数类型
function pointer - Expression preceding parentheses of apparent call must have (pointer-to-) function type
我有一个 class:
#include<map>
class myclass {
public:
typedef std::map<std::string, int(myclass::*)()> mymap;
void Foo() {
UpdateMap();
mymap1["AddToa"]();
mymap1["AddTob"]();
}
private:
int a;
int b;
mymap mymap1;
int AddToa(){ std::cout<< "add 2 to a: " << a+2 << std::endl;};
int AddTob(){ std::cout<< "add 2 to b: " << b+2 << std::endl;};
void UpdateMap(){
mymap1["AddToa"] = &myclass::AddToa;
mymap1["AddTob"] = &myclass::AddTob;
}
};
但是在 Foo() 中,当我试图通过它们的指针调用这两个函数时:
mymap1["AddToa"]();
我得到这个编译错误:
显式调用括号前的表达式必须具有(指向)函数类型
我该怎么办?
您似乎想调用当前class上的成员函数指针。
(this->*mymap1["AddToa"])();
我有一个 class:
#include<map>
class myclass {
public:
typedef std::map<std::string, int(myclass::*)()> mymap;
void Foo() {
UpdateMap();
mymap1["AddToa"]();
mymap1["AddTob"]();
}
private:
int a;
int b;
mymap mymap1;
int AddToa(){ std::cout<< "add 2 to a: " << a+2 << std::endl;};
int AddTob(){ std::cout<< "add 2 to b: " << b+2 << std::endl;};
void UpdateMap(){
mymap1["AddToa"] = &myclass::AddToa;
mymap1["AddTob"] = &myclass::AddTob;
}
};
但是在 Foo() 中,当我试图通过它们的指针调用这两个函数时:
mymap1["AddToa"]();
我得到这个编译错误:
显式调用括号前的表达式必须具有(指向)函数类型
我该怎么办?
您似乎想调用当前class上的成员函数指针。
(this->*mymap1["AddToa"])();