rem*_*acp 1 c++ pointers member-function-pointers function
我想要做的是有一个类包含第二个类的函数指针的映射,但第二个类的名称应该无关紧要(不能硬编码到第一个类)我真的希望能够实现这没有使用宏.我已经跟随了关于函数指针的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;
};
Run Code Online (Sandbox Code Playgroud)
类的名称是函数指针类型的一部分,它成为map类型的一部分,它成为MyClass的一部分.根据"不能硬编码"的要求有多强,或许模板就足够了?
#include <string>
#include <map>
template<typename T>
class Class1
{
typedef double(T::*memFunc)();
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()
{
class1.addFunc("new function", &MyClass::getValue);
}
double getValue()
{
return 0;
}
private:
Class1<MyClass> class1;
};
int main()
{
MyClass mc;
}
Run Code Online (Sandbox Code Playgroud)