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.


Anmelden zum Antworten