Also, ich habe eine Klasse World
wo gibt es einen Vektor von Instanzen der Klasse Object
. Jetzt versuche ich, eine Funktion in World zu erstellen, die einen Verweis auf eines der Objekte des Vektors zurückgibt, so dass Sie in main()
Werte direkt in das Array ändern können. Es wäre etwas wie:Rückkehr Verweis auf Klassenvariable - 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;
}
Ist das möglich und legal in C++? Danke!
Ja, natürlich. Gib einfach eine aktuelle Referenz zurück (hier ist ein Wert in deinem Code). – Quentin
Ja, es ist legal. Aber Sie geben keine Referenz zurück. – DNK
Die Funktion könnte natürlich ein 'Objekt & lt; zurückgeben, nicht, dass dies eine so gute Idee ist. Sobald Sie Änderungen am Vektor vornehmen, wird die Referenz möglicherweise ungültig. Warum kann der Code (in main), der Änderungen vornimmt, nicht Mitglied von "World" oder "Object" sein? –