Referenz Member
-
Hallo,
folgender Code:
class Foo { private: std::vector<int> vec; public: Foo() { Bar b(vec); } }; class Bar { public: std::vector<int>& ref: Bar(X myRef) : ref(myRef) { } }:Meine Fragen: Wenn Foo vec veraendert, dann aendert sich immer auch Bar::ref, oder?
Und welcher Typ muss das X sein (im Bar Ctor). Am logischsten erscheint mir std::vector<int>&, aber ginge auch std::vector<int> (also ohne Referenz)?
-
reffrage schrieb:
...
Und welcher Typ muss das X sein (im Bar Ctor). Am logischsten erscheint mir std::vector<int>&, aber ginge auch std::vector<int> (also ohne Referenz)?in Letzterem Fall würde die Bar::ref an ein temporäres Objekt gebunden (den Übergabeparameter von Bar::Bar), was mir nicht erwünscht scheint - schließlich beendet der nach Ablauf des Konstruktors sein Leben und Bar::ref zeigt uns Nirvana.
Außerdem scheint mir die gesamte Konstruktion darauf ausgelegt, dass Bar zur Initialisierung von Foo::vec verwendet werden soll - und das klappt nicht, wenn du Bar nur eine Kopie von Foo::vec übergibst.Ergo: Mit & .
Gruß,
Simon2.