我有兩個繼承類。我想讓這些類將它們的函數存儲在一張地圖中。我怎樣才能通過鍵創建查找功能?函數的繼承會起作用(MyClass_2沒有自己的doSmth()函數,它應該添加來自MyClass的doSmth())?我嘗試低於:C++ find()用於映射成員函數
template<class T>
class Class1
{
typedef void(T::*MyFunction)();
map<string, MyFunction> functionMap;
public:
void addFunc(string funcName, MyFunction function) {
functionMap.insert(pair<string, MyFunction>(funcName, function));
}
bool findFunc(string key) {
typename map<string, MyFunction>::iterator it;
it = functionMap.find(key.c_str());
}
};
class MyClass {
Class1<MyClass> class1;
void addFunc() {
class1.addFunc("Func1", &MyClass::doSmth);
}
void findAndCallFunc(string key) {
class1.findFunc(key);
}
void doSmth();
};
class MyClass_2: MyClass {
Class1<MyClass_2> class1;
void addFunc() {
class1.addFunc("Func1", &MyClass_2::doSmth);
}
}
編輯:我測試了我的PROGRAMM。有用。我的問題是,如果我從MyClass_2的對象調用fundAndCallFunc。它不需要MyClass_2的class1,而是MyClass的class1。 我應該改變什麼?