我正在尝试创建一个 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/