std::map extern deklarieren?
-
Ich verstehe es nicht, ich habe folgendes:
// abgesichert mit #ifndef enum MyType {A,B,C}; std::map<std::string, MyType> myMap;
So bekomme ich "multiple definitions".
Mache ich
// abgesichert mit #ifndef enum MyType {A,B,C}; extern std::map<std::string, MyType> myMap;
und deklariere myMap in der zugehörigen *.cpp, dann kommt "is ambigous".
Mache ich nur das "extern" ohne Deklaration dann... ja dann wird gelinkt. Das kann doch gar nicht sein ??make clean habe ich auch gemacht. Wie mache ich denn jetzt die map global korrekt verfügbar?
-
// MyType.h #ifndef MYTYPE_H_INCLUDED #define MYTYPE_H_INCLUDED enum MyType {A,B,C}; extern std::map<std::string, MyType> myMap; #endif // MYTYPE_H_INCLUDED // MyType.cpp #include "MyType.h" std::map<std::string, MyType> myMap;