我有一个问题,我有一个类,我需要一个该类的二维数组。通常我会使用向量来做这件事,但不幸的是我正在使用一个不太可能的库,这让我意识到我对常规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值,我出于某种原因只能在构造函数本身中执行此操作,我将如何处理此问题?任何帮助将不胜感激。
答案 0 :(得分:1)
如果你打算做一个类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
所有动态分配的内存!