我有一个初学者的问题:
class Snake
{
public:
int mapa[][];
Snake(int szer,int wys)
{
mapa[szer][wys];
}
};
我正在尝试做类似上面的事情(创建具有在构造函数中定义的大小的数组),但它在 C++ 中似乎是不可能的。有什么办法可以完成这项工作吗?
我有一个初学者的问题:
class Snake
{
public:
int mapa[][];
Snake(int szer,int wys)
{
mapa[szer][wys];
}
};
我正在尝试做类似上面的事情(创建具有在构造函数中定义的大小的数组),但它在 C++ 中似乎是不可能的。有什么办法可以完成这项工作吗?
是的:
std::vector<std::vector<int> > ...;
根据您的需要,您可以使用一个std::vector<std::vector<T> >
或一个类来提供一个std::vector<T>
二维区域的接口。对于后者,您将重载operator[]()
以返回一个对象,该对象为内部的子范围提供std::vector<T>
数组本身的砍伐。如果您只想使用 subscriot 运算符,返回 astd::vector<T>::iterator
会起作用,但它不会暴露,例如,begin()
和end()
迭代器。
如果您真的想使用new
关键字,则必须进行两步初始化:
int **mapa;
Snake(int szer,int wys)
{
mapa = new int*[szer];
for (int i = 0; i < szer; i ++)
mapa[i] = new int[wys];
...