私は初心者の問題を抱えています:
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> > ...;
必要に応じて、2 次元エリアのインターフェイスをstd::vector<std::vector<T> >
提供する またはクラスを使用できます。std::vector<T>
後者の場合、オーバーロードして、内部の部分範囲に配列自体をoperator[]()
削除するオブジェクトを返します。std::vector<T>
subscriot 演算子を使用したいだけの場合、 a を返すstd::vector<T>::iterator
ことはできますが、たとえばbegin()
andend()
イテレータは公開されません。
new
本当にキーワードを使用したい場合は、2 段階の初期化を行う必要があります。
int **mapa;
Snake(int szer,int wys)
{
mapa = new int*[szer];
for (int i = 0; i < szer; i ++)
mapa[i] = new int[wys];
...