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

时间:2014-02-20 15:36:58

标签: c++ arrays class

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

1 个答案:

答案 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所有动态分配的内存!