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)
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)
矢量是你最好的朋友
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)