我不知道如何为这个问题命名。我有一个基类和两个继承类:
class Base {};
class Action : public Base {};
class Title : public Base {};
现在假设我有两个返回Action *
or的函数Title *
:
Action *getAction() { return new Action; }
Title *getTitle() { return new Title; }
有没有办法把这两个功能放到一个地图中?像这样:
int main()
{
std::map<std::string, Base *(*)()> myMap;
myMap["action"] = getAction;
myMap["title"] = getTitle;
return 0;
}
现在我收到一个错误:
invalid conversion from `Action* (*)()' to `Base* (*)()'
我可以更改函数的签名以始终返回基类,然后它会起作用,但我想知道是否有另一种方法来解决这个问题。