gpt4 book ai didi

c++ - 类的二维数组和C++中的构造函数调用

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:28 25 4
gpt4 key购买 nike

我有一个问题,我有一个类,我需要那个类的二维数组。通常我会使用 vector 来执行此操作,但不幸的是,我正在使用一个库,而这实际上是不可能的,这让我意识到我对传统 C 数组知之甚少。

我对这个主题做了一些研究,并找到了很多关于如何在 C++ 中正确制作二维数组的答案,甚至是类的二维数组。问题只是所有解决方案都省略了构造函数的调用,这是我需要的。举个例子:

class cClass
{
public:
int x;
int y;
cClass()
{
}
};

int main(int argv, char argc[])
{
cClass ** cClass_testClass = new cClass*[5];
for (int i = 0; i < 5; ++i)
{
cClass_testClass[i] = new cClass[5];
}
system("PAUSE");
return 0;
}

根据我的理解,这将创建类“cCLass”的二维 5x5 数组。它会起作用,因为构造函数实际上并没有做任何事情。现在说我宁愿让类中的 x 和 y 值对应于数组中的 x 和 y 值,并且出于某种原因我只能在构造函数本身中执行此操作,我将如何处理这个问题?任何帮助将不胜感激。

最佳答案

如果你要创建类 cClass 的数组,你需要它有一个不带参数的构造函数,这就是在分配数组时调用的构造函数 ( new cClass[5]).

要解决您的问题,请创建指向 cClass 的指针的二维数组:

cClass*** cClass_testClass = new cClass**[5];
for (int i = 0; i < 5; ++i)
{
cClass_testClass[i] = new cClass*[5];
for(int j = 0; j < 5; ++j)
{
cClass_testClass[i][j] = new cClass(i, j);
}
}

并且不要忘记最终删除所有动态分配的内存!

关于c++ - 类的二维数组和C++中的构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912448/

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