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



我遇到了一个问题,我有一个类,我需要该类的二维数组。通常情况下,我会使用向量来完成这项工作,但不幸的是,我正在使用一个库,而这实际上是不可能的,这让我意识到我对传统的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;
}

据我所知,这创建了一个类"class"的二维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);
}
}

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

最新更新