新的 C++ 程序员在这里。
我有以下地图定义:
typedef std::map<std::string, Option> MapType;
MapType my_map
Option 是我创建的一个独特的类。我从来没有真正将 Option 类添加到我的地图中。相反,我总是添加一个从 Option 继承的类,例如,我有一个名为 IntOption 的类,它存储一个 int 变量(它所做的一切)。
现在我通过执行以下操作将 IntOption 添加到我的地图中没有问题:
IntOption add;
my_map.insert(std::pair<string, IntOption>("a key here", add));
这很好用,因为当我做
my_map["a key here"]
它将返回值“add”。
现在我对你们所有好人的问题是我怎样才能从返回值中获取子类变量?我可以做到以下几点
my_map["a key here"].getVariableA(); // this is in the base class Option.
但我做不到
my_map["a key here"].getIntVariable(); //this fails because it doesnt recognize the
// getter 因为它不在基类中,而是在扩展 Option 的类中。
我该如何解决这个问题?
我考虑过 typedef std::map MapType;
买我不知道如何进行动态转换,也不知道如何将指向类的指针添加到地图中。