unit
要素を持つクラスがありますint holding[4];
void main()
{
vector<vector<unit> > allunits;
vector<vector<short> > selectedunits; //This contains certain indexes for the above vector
allunits.resize(2);
selectedunits.resize(2);
allunits[0].resize(5);
int *ptr = &allunits[0][selectedunits[0][0]].holding[0]; //obviously dysfunctional
}
私が欲しいのは、このポインターが指すものを動的に変更することです。の値が変更されたときに、の新しい値を自動的にポイントしselectedunits[0][0]
たいと思います。が空のベクトルの場合、何でもかまいませんが、実行時エラーをスローすることはできません。これが現在の動作です。ptr
allunits[0][selectedunits[0][0]].holding[0]
selectedunits[0]
ptr
したがって、後でコードを持っている場合は、をポイントしselectedunits[0].push_back(2);
たいので、その行はポイントを作成する必要がありますptr
allunits[0][2].holding[0]
selectedunits[0][0]=1;
ptr
allunits[0][1].holding[0]
編集:このコードのポイント:
これはすべてゲーム用です。allunits
は単位のベクトルであり、selectedunits
選択された単位を格納します。どちらも[player][index]に編成されているため、2次元です。allunits[0]
最初のプレイヤーのユニットを保持します。
特定の条件下で、画面にテキストを出力するオブジェクトのコンストラクターにポインターが渡されます。印刷されるテキストは、選択されたユニットに関する情報であり、ポインタが指している番号が含まれています。別のオブジェクトは別のデータ、つまりポインタを出力します。