iterator problem (maps)



  • Hallo,

    Ich habe folgendes Problem dieser Code lässt sich nicht kompelieren:

    for(map<std::string,int>::iterator iter = intmap.begin(); iter != intmap.end(); iter++)
    	{
    		std::string test1, test2;
    		int test;
    		test1 = iter->first(); //Zeile 116
    		test = iter->second(); //Zeile 117
    
    		cout << test1 << ":" << test2 << endl; 
    	}
    

    Ich bekomme aber immer die Fehlermeldung:
    116 D:\Programmierung\cvs_working\optionen\ffoptionen.cpp no match for call to (const std::string) ()' und auch noch die Fehlermeldung: 117 D:\\Programmierung\\cvs\_working\\optionen\\ffoptionen.cpp(&iter)->std::_Rb_tree_iterator<_Tp>::operator-> [with _Tp = std::pair<const std::string, int>]()->std::pair<const std::string, int>::second' cannot be used as a function

    Woran liegt das?



  • an ()



  • oder ausführlicher: first und second sind Membervariablen von std::pair<>, da brauchst du keine Funktionsklammern dranzuhängen:

    std::string test1=iter->first;
    int test2=iter->second;
    cout<<test1<<":"<<test2<<endl;
    

    PS: dein Programm dürfte auch so nicht das richtige machen - du deklarierst zwar die 'string test2', belegst sie abewr nirgends mit einem vernünftigen Wert.



  • test2 ist eine dbg variabel die hat im quelltext normalerweise eine lebensdauer von einer minute. (Ich hab an dem Codeschnipsel schon ein bisschen rumgebastelt)


Anmelden zum Antworten