wie verwendet man Zeiger auf eine map?



  • #include <map>
    #include <string>
    
    typedef std::map< std::string, long > MapType;
    
    class A
    {
    public:
        MapType KeyMap;
        inline MapType* Getmap(){ return &KeyMap;}; //richtig so?
        inline void MapTest() { KeyMap["TestA"]=1;}; // das funktioniert
    };
    
    int main()
    { 
        A einA;
        einA.MapTest();
        MapType* pKeyMap=einA.Getmap();
        *pKeyMap["TestB"]=2; // hier meckert der Compiler - warum???        
        return 0;
    }
    

    E:\1PROGS\CTMP\tmp\tmp.cpp(28) : error C2107: Ungueltiger Index, Zeigeroperation nicht erlaubt
    E:\1PROGS\CTMP\tmp\tmp.cpp(28) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'const int' akzeptiert (oder keine geeignete Konvertierung moeglich)

    Ich will einer Map über einen Zeiger einen Wert zuweisen. Wie schreibt man das richtig?



  • pKeyMap->operator[]("TestB") = 2;



  • !! Reihenfolge !!

    Erst dereferenzieren, dann Operator[] aufrufen!
    (*pKeyMap)["TestB"]=2;


Anmelden zum Antworten