特定の項目を変更します。はC++で、私はベクトルで一つのアイテムを追跡し、次のようにそれを修正したいと思いベクトル
vector<myObj> v;
myObj obj = myObj(params)
v.push_back(myObj);
obj = myObj(params)
v.push_back(myObj);
obj = myObj(params)
v.push_back(myObj);
myObj* modThis = &v[2];
//modify modThis
をしかし、私は私の本当のコードでこのような何かをするとき、それが唯一のA修正しますベクトル内の実際のオブジェクトを変更するのではなく、オブジェクトのコピーを作成します。私はmodThisと& v [2]のアドレスを表示しましたが、それらは同じではありません!私はまた、次のようなものを試してみました:
だけオブジェクトのコピーを作成し、コピーではなく、ベクトルに格納されている元のオブジェクトを変更し続けているようだmyObj modThis = v[2];
//modiy myObj
。
アイテムをコピーせずにベクター内のオブジェクトの変更にアクセスするにはどうすればよいですか?私は何が欠けていますか?
注:現在、myObjには、コンパイラによって生成されたコピーコンストラクタがあります。
を助け
vec.at(1)->SetString("Modified string");
希望をや'&modThis '? – NathanOliver
私はmodThisと&v [2]を印刷しましたが、それらは同じではありませんでした。 – imjojo42
'v.push_back(myObj);'はコンパイルされません。 [mcve](http://stackoverflow.com/help/mcve)を提供して再現できるようにしてください。 – songyuanyao