是的,我对 c++ 还很陌生,所以我仍然在这里学习。如果我以错误的方式进行此操作,请告诉我,但如果可能的话,请尝试为我指出正确的方向(可能带有指向教程的链接)。
我一直在玩 std::map 并用它来存储对象(项目)。这工作正常。问题是试图在地图中存储派生项目。我已经让它工作了,但它似乎正在分割派生对象。
所以说项目具有属性a,b和c。食物来自具有额外属性 d 和 e 的项目。当 d 和 e 存储在项目地图中时,我无法访问它。编译器说:
“错误:‘类项目’没有名为‘d’的成员”
是否可以多态使用 std::map 或者我需要使用另一个库,如 boost?Boost 看起来相当复杂,我希望在我还在学习的时候有办法用 map 来做。这是我正在玩的一些代码,以使我的意思更清楚。
项目映射声明如下:
typedef std::map <int, tItem*> itemMap;
像这样添加东西:
Item * item = new Item (a, b, c);
itemmap [vnum] = item;
DerivedItem * deriveditem = new DerivedItem (a, b, c, d, e);
itemmap [vnum] = deriveditem;
这有效,但我无法访问派生项目的 d 和 e 。
谢谢你们的帮助