gpt4 book ai didi

c++ - 使用类对象和派生对象 C++ 创建数组

转载 作者:行者123 更新时间:2023-11-30 03:59:14 24 4
gpt4 key购买 nike

我正在尝试创建一个 2 个数组,regDiceBag 包含 10 个基类对象 Die,另一个数组包含 5 个基类对象和 5 个派生类对象 LoadedDie。我不知道如何创建第二个数组,但是,根据过去的经验,第一个数组应该像这样初始化:Die[] regDieBag[10]; 然后当我想填充时它与 for 循环中的 Die 对象,我会做 regDieBag[i] = new Die(6);。好吧,这就是我认为它应该工作的方式,但是当我编译我的程序时我得到了这个错误:

DieTester.cpp: In function ‘int main()’:
DieTester.cpp:33: error: expected unqualified-id before ‘[’ token
DieTester.cpp:35: error: ‘regDieBag’ was not declared in this scope

我已经尝试过我在谷歌上找到的其他方法,有些与此类似,有些则略有不同,但似乎对第一个数组没有任何作用。您能否向我解释一下我将如何有效地创建 2 个数组?另一件事,在第二个数组中,它将填充 Die 和 LoadedDie,我将如何调用每个类可用的函数,包括那些不是从基类 (Die) 继承的函数?

最佳答案

首先,你需要修正一个语法错误:与Java或C#不同,数组类型由类型名称后的一对空方括号表示,C++“理解”变量名称后的方括号改变了类型数组类型的变量。

Die[] regDieBag[10];
// ^^ This syntax is incorrect

现在,当你看到这些线条在一起时

Die regDieBag[10];
// ^ No asterisk

regDieBag[i] = new Die(6);
// ^^^ Using operator new

你应该开始怀疑了:new 产生了一个指针,而你正试图将它分配给一个非指针数组!

如下更改声明以解决此问题:

Die *regDieBag[10];

由于您正在使用 Die 类型及其子类型 LoadedDie 的动态分配对象,您需要 (1) 确保 Die 声明一个虚拟析构函数,以及 (2) 当您完成对数组的处理后,对 regDieBag 的每个元素调用 delete 以避免内存泄漏。

关于c++ - 使用类对象和派生对象 C++ 创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026089/

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