私は初心者の問題を抱えています:
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];
...