私はクラスWorld
を持っています。クラスObject
のインスタンスのベクトルがあります。今、ベクトルのオブジェクトの1つへの参照を返す関数をWorldに作成しようとしています。main()
では、値を直接配列に変更できます。クラス変数への参照を返す -
class Object{
//things
}
class World{
private:
vector <Object> ObjectsInWorld;
public:
Object functionThatReturnsReference(int index){
//somehow return reference to ObjectsInWorld[index];
}
}
int main(){
World world;
Object& obj = world.functionThatReturnsReference(2);
//now changes made to obj should apply also to world's ObjectsInWorld[2]
return 0;
}
これはC++で可能ですか? ありがとう!
はい、もちろんです。実際の参照を返してください(ここではコード内の値です)。 – Quentin
はい、合法です。しかし、あなたは参照を返さない。 – DNK
もちろん、この関数は合法的に 'Object&'を返すことができます。これは良い考えではありません。ベクタを変更すると、参照が無効になることがあります。なぜ、変更を行うコード(メイン)が 'World'や' Object'のメンバーになっていないのですか? –