私がやりたいのは、2番目のクラスの関数ポインターのマップを含むクラスを作成することですが、2番目のクラスの名前は重要ではありません(最初のクラスにハードコーディングすることはできません)。これはマクロを使用せずに。関数ポインターについてlearncpp.comの例に従いましたが、クラス間でそれらを渡すと、本当に迷子になります。私の試みは以下の通りです:
#include <map>
class Class1;
typedef double(Class1::*memFunc)();
class Class1
{
private:
std::map<std::string, memFunc> funcMap;
public:
void addFunc(std::string funcName, memFunc function)
{
funcMap.insert(std::pair<std::string, memFunc>(funcName, function));
}
};
class MyClass
{
public:
MyClass()
{
//How do I add member function getValue() to Class1?
class1.addFunc("new function", getValue());
}
double getValue()
{
return 0;
}
private:
Class1 class1;
};