Ein weiteres "ungültige Initialisierung der Referenz des Typs" Fehler
Ich haben container in meine Klasse wie folgt aus:
protected:
std::map<const AAA*, std::set<BBB*> > conn;
Beide der folgenden Funktionen getter funktioniert Prima:
std::map<const AAA*, std::set<BBB*> > & getConnectors() {return connectors;}
std::map<const AAA*, std::set<BBB*> > getConnectors() const {return connectors;}
aber & und const zusammen, NÖ.Fehler gibt:
std::map<const AAA*, std::set<BBB*> > & getConnectors() const {return connectors;} //error
Fehler:
/home.../Multi.hpp:65:108: error: invalid initialization of reference of type ‘std::map<const AAA*, std::set<BBB*> >&’ from expression of type ‘const std::map<const AAA*, std::set<BBB*> >’
make[2]: *** [CMakeFiles/SimMobility.dir/main.cpp.o] Error 1
warum bekomme ich diese und Wie kann ich es lösen, bitte
danke
- Lesen Sie die Fehlermeldung!!! In einem
const
Methode, diethis
Zeiger und die Mitglieder werden behandelt, alsconst
, können Sie nicht zurück, ein nicht-const
Verweis auf eineconst
Objekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese funktioniert nicht, da von einem
const
Methode alle Mitglieder (nebenmutable
) sollte behandelt werden, als ob Sieconst
sich.Dies bedeutet, dass nicht nur Sie nicht ändern können Sie von der Methode, aber auch Sie können nicht zeigen Sie auf Sie mit einem Zeiger auf non-const oder in form einer Referenz auf nicht-const.
Deswegen benutzen:
sollte das Letzte so geschrieben werden, als