我正在创建一个应用程序,允许用户定义不同形状的尺寸,并使用他们指定的尺寸将面积返回给用户。

我的基础课是Shape。派生类为Triangle,Circle,Square和Rectangle。

我创建了一个Shape数组,希望在运行时创建和存储该数组中任何派生类的实例。

Shape** shape = new Shape*[TOTAL_SHAPES];

shape[i] = new Circle(radius);

我已经做到了,但是我无法访问实例化的类方法。抱歉,如果这是一个愚蠢的问题,我对C++还是陌生的。

最佳答案

假设您的类型具有以下定义

class Shape {
public:
  void Method1() { ... }
};

class Circle : public Shape {
  void Method2() { ... }
}

使用此定义,您可以通过执行以下操作访问Shape上的方法
shape[i]->Method1();

在这种情况下,尽管由于编译器只知道Method2而不是Shape,但无法访问Circle
shape[i]->Method2(); // Error!

关于c++ - 基类的C++数组,具有存储在数组元素中的派生类的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20912106/

10-16 04:38