如果我有一个带派生类的抽象类,而不使用STL数据结构类,我如何以多态方式创建动态对象数组? (矢量,列表等)
静态对象数组
TwoDimensionShape *shapes[2];
shapes[0] = &Triangle("right", 8.0, 12.0);
shapes[1] = &Rectangle(10);
我知道我不能这样做,因为你不能创建抽象类的对象:
cin >> x;
TwoDimensionShape *s = new TwoDimensionShape [x];
修改
感谢Nick,这有效:
int x = 5;
TwoDimensionShape **shapes = new (TwoDimensionShape*[x]);
答案 0 :(得分:4)
您可以创建指向该类的指针数组:
TwoDimensionShape **s = new TwoDimensionShape*[x];
然后使用它的特定类型构造每个对象:
s[0] = new Triangle("right", 8.0, 12.0);
s[1] = new Rectangle(10);
与你的相似。 记得在不再需要时删除。