【发布时间】:2011-10-06 01:15:50
【问题描述】:
这里是新的 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;
我不知道如何进行动态转换,也不知道如何将指向类的指针添加到地图中。
【问题讨论】:
标签: c++ map dynamic-cast