2012-05-25 11 views
14

Ich studiere die C++ Primer 4. Ausgabe von Stanley B. Lippman. In Abschnitt 12.4.1, wenn der Autor spricht über Konstruktor Initialisierungen, er dieses Beispiel gibt:Initiiert der Konstruktorinitialisierer eine freie Referenz?

class ConstRef { 
    public: 
    ConstRef(int ii); 
    private: 
    int i; 
    const int ci; 
    int &ri; 
}; 
// OK: explicitly initialize reference and const members. 
ConstRef::ConstRef(int ii): i(ii), ci(i), ri(ii) { } 

vermute ich, dass diese baumelnden einen Verweis ri zeigt auf ii verursachen kann, was eine vorübergehende ist. Habe ich recht?

+16

Klirren ++ ist echt hilfreich: 'Warnung: binding Referenzelement 'ri' to stack Parameter 'ii' zugeordnet [-Wdangling-Feld]' – Mat

+0

um gegoogelt Nachdem um zu sehen, wie es ist, die Fehlermeldung aussieht echt super. – chanp

Antwort

13

Ich denke schon. Versuchen Sie, diese

ConstRef::ConstRef(int ii): i(ii), ci(i), ri(i) { } 
+0

Danke für schnelle Antwort! Also bin ich jetzt sicherer :) – chanp

Verwandte Themen