G++ sieht Bezeichner nicht/Widerspruch zum winCompiler bei Initalisierung einer verschachtelten Map im Header File
-
Hallo zusammen,
unter Linux fliegt mir das hier um die Ohren mit
A.h:126:52: error: 'enumsByModel' was not declared in this scopeclass A : public boost::enable_shared_from_this<A> { public: private: std::map<std::string,std::map<int, std::string>> enumsByModel; void initalizeModels(); };Unter Windows funktioniert dies dagegen problemlos. Daher stellt sich mir die Frage worin der g++ compiler hierbei für ein Problem sieht.
Diese Map wird im ctor via initalizeModels() befüllt.
Vielen Dank
-
Testweise kannst du mal aus
std::map<std::string,std::map<int, std::string>> enumsByModel;Das hier machen:
std::map<std::string,std::map<int, std::string> > enumsByModel;Nach dem alten standard muss da nen leerzeichen rein. Inwieweit das dein compiler ohne Leerzeichen unterstützt weiß ich nicht.
-
Unter Visual C++ werden die neuen C++11 Features immer verwendet,
daher hat Visual C++ 2010 keine Probleme damit deinen Code zu kompilieren.Den GCC muss man allerdings erst dazu überreden, C++11 zu sprechen.
Dazu übergibst du dem Compiler den Parameter -std=c++0x
z.B.:
g++ -ofoo -std=c++0x foo.cppDanach wird auch der g++ deinen neuen Code mit Freuden übersetzen.

-
vielen Dank Q, genau das war der Fehler
Ich bin etwas bestürzt, verwundert und geschockt...
-
Blutgerinsel schrieb:
Ich bin etwas bestürzt, verwundert und geschockt...
Warum?