그래서 Object
클래스의 인스턴스 벡터가있는 World
클래스가 있습니다. 자, 벡터의 객체 중 하나에 대한 참조를 반환하는 World에 함수를 만들려고합니다. 따라서 main()
에서 값을 배열로 직접 변경할 수 있습니다. 다음과 같은 형식이 될 수 있습니다 :클래스 변수에 대한 참조 반환 - C++
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 &'를 반환 할 수 있습니다. 이것은 좋은 생각이 아닙니다. 벡터를 변경하면 참조가 무효화 될 수 있습니다. 왜 변경을하는 코드 (main에서)가'World' 또는'Object'의 멤버가 될 수 없습니까? –