在C++中延迟类定义中的数组大小?

sly*_*fox 5 c++ arrays size delay

有没有办法延迟定义数组的大小,直到类方法或构造函数?

我在想什么可能看起来像这样,当然,它不起作用:

class Test
{
    private:
    int _array[][];

    public:
    Test::Test(int width, int height);
};

Test::Test(int width, int height)
{
    _array[width][height];
}
Run Code Online (Sandbox Code Playgroud)

Red*_*ing 8

Daniel正在谈论的是,在调用Test(width,height)方法时,您需要动态地为数组分配内存.

你会像这样声明你的二维(假设整数数组):

int ** _array;
Run Code Online (Sandbox Code Playgroud)

然后在你的Test方法中你需要先分配指针数组,然后为每个指针分配一个整数数组:

_array = new  *int [height];
for (int i = 0; i < height; i++)
{
    _array [i] = new int[width];
}
Run Code Online (Sandbox Code Playgroud)

然后当释放对象时,您需要显式删除分配的内存.

for (int i = 0; i < height; i++)
{
    delete [] _array[i];
    _array [i] = NULL;
}
delete [] _array;
_array = NULL;
Run Code Online (Sandbox Code Playgroud)


Art*_*yom 8

矢量是你最好的朋友

class Test
{
    private:
    vector<vector<int> > _array;

    public:
    Test(int width, int height) :
        _array(width,vector<int>(height,0))
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 实际上,vector*必须*使用数组来存储数据.该标准规定了向量中的元素是连续的. (2认同)