この質問にタイトルを付ける方法が正確にわかりませんでした。基本クラスと 2 つの継承クラスがあります。
class Base {};
class Action : public Base {};
class Title : public Base {};
Action *
ここで、またはのいずれかを返す 2 つの関数があるとしますTitle *
。
Action *getAction() { return new Action; }
Title *getTitle() { return new Title; }
これら 2 つの関数をマップに入れる方法はありますか? そのようです:
int main()
{
std::map<std::string, Base *(*)()> myMap;
myMap["action"] = getAction;
myMap["title"] = getTitle;
return 0;
}
現在、エラーが発生しています:
invalid conversion from `Action* (*)()' to `Base* (*)()'
関数のシグネチャを変更して、常に基本クラスを返すようにすることもできますが、それは機能しますが、これを回避する別の方法があるかどうか疑問に思っています。