gpt4 book ai didi

基类的 C++ 数组,它具有存储在数组元素中的派生类的实例

转载 作者:行者123 更新时间:2023-11-30 01:55:15 25 4
gpt4 key购买 nike

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

我的基类是 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++ 数组,它具有存储在数组元素中的派生类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20912106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com