1

22 組の int (グリッド内の位置) を保持する変数が必要なので、行列配列を考えていました。したがって、私のヘッダーファイルは次のとおりです。

int points[22][2];

しかし、オブジェクトのコンストラクターに次を入れると:

this->points = {{1,2},{2,3},...};

「式は変更可能な左辺値である必要があります」と表示されます ここで説明されているように、 const キーワードを使用してヘッダーファイルのポインターにしようとしました式は変更可能なL値でなければなりません

また、別の 2 次元配列を作成して割り当てようとしましたが、これも機能しません。

int points2 = {{1,2},{2,3},...};
this->points = points2;

私は Java には慣れていて、C++ の経験はあまりありません。上記のように値を割り当てるデフォルトのコンストラクターと、マトリックスをパラメーターとして持つコンストラクターがあります。

以下は機能します:

this->point[1][1] = 4;

しかし、これは別の値をパラメーターとして渡すことができず、デフォルトのコンストラクターで 44 行のコードが乱雑になることを意味します。そして、私は2つのintを持つ構造体を使用し、それらをベクタープットに入れましたが、これは少しやり過ぎのように見え、手動の値でコンストラクターを呼び出す前に22のベクター挿入が必要であることを意味します。より良い方法になります:)

ありがとう

4

2 に答える 2

0

問題の根本的な原因は、C++ では配列が実数値としてカウントされないことです。それらは多くの点で標準以下であり、そのうちの 1 つに遭遇しました。通常のタイプは、期待どおりに機能します。残念ながら、言語の専門家ではない私たちにとって、Visual Studio がスローするエラーは非常に役に立ちません。

スタック上に配列を作成し、手動でループしてすべての値を割り当てる必要があります。

于 2012-04-13T00:10:43.287 に答える