【发布时间】:2014-12-15 17:31:17
【问题描述】:
我需要帮助才能开始这项作业。我有一个基类Shape,以及派生类MyCircle、MyRect 和MyTriangle。
对于作业,我需要随机生成形状并将它们存储到地图中。
这是我不明白的。它声明:映射中的键值将是形状类型,映射值将是形状指针的向量。
我创建了 Shape 指针向量如下:
// define our array size
const int baseSize = 3;
// create an vector of base class pointers
vector <Shape *> baseShape(baseSize);
// declare our objects, and pointers for downcasting
MyRect rObj, *rPtr;
MyTriangle tObj, *tPtr;
MyCircle cObj, *cPtr;
// initialize our vector of base class pointers
//initialize vector of shapes
baseShape[0] = &rObj; // a MyRect IS A Shape
baseShape[1] = &tObj; // a MyTriangle IS A Shape
baseShape[2] = &cObj; // a MyCircle IS A Shape
但是我不确定如何实现map,更具体地说,我不明白为什么键值类型是Shape。
如果我声明一个地图如下
//map
map <Shape, vector <Shape *> > shapeMap;
地图可以做到这一点吗?
shapeMap[rObj] = baseShape[0];
shapeMap[rObj] = baseShape[0];
shapeMap[rObj] = baseShape[0];
shapeMap[rObj] = baseShape[0];
... 具有不同属性的形状每个形状20次。
【问题讨论】:
标签: c++ oop dictionary vector polymorphism