<map> Key vorhanden?



  • Was passiert denn, wenn du in der Zeile einfach nur myIter->first; schreibst. Macht zwar erstmal keinen Sinn, aber nur um den Fehler einzugrenzen.



  • Nachtrag: Warum verwendest du nicht einfach den freien VC++ 2005 (Express)... ;p



  • oder Code::Blocks?



  • Er kann kein MSVC8 benutzen! Hatten wir schon das Thema ausführlich in einem anderen Thread! Er entwickelt an einer alten kommerziellen Software, ein Umstieg ist nicht einfach so möglich.

    plizer! Probier mal http://www.stlport.org/ aus. Angeblich soll das eine ISO-konforme Std-Lib sein, die auch auf dem MSVC6 funktioniert.



  • Gut, selbst dann ist oben ein linkbarer Code... für make_pair ist halt vorher eine Typumwandlung der Einzeltypen nötig... Das Problem ist nur diese Stellen zu finden in all den Warnungen die man seitens des Compilers bekommt.



  • Artchi schrieb:

    Er kann kein MSVC8 benutzen! Hatten wir schon das Thema ausführlich in einem anderen Thread! Er entwickelt an einer alten kommerziellen Software, ein Umstieg ist nicht einfach so möglich.

    So langsam muss er sich aber die Frage stellen, ob das Code anpassen an den vc6 nicht irgendwann länger dauert, als das projekt jetzt komplett zu portieren.



  • bei nur:

    myIter->first;
    

    Kommt auch der gleiche Fehler!



  • otze! Ja, ich weiß. Habe auch gesagt, das man zumindest MSVC8 evaluieren sollte. Also nicht einfach blind umsteigen, sondern die MSVC2005-Testversion runter laden und ein paar Tage mit dem alten Projekt rumspielen und dann entscheiden.

    Aber er ist C++-Neuling und kommt von Java. Die alten C++-Veteranen aus der Firma sind weg. Und er braucht WTL und so wie ich es verstanden habe auch die MFC. Weiß nicht... Aber einen MS-Compiler braucht er definitiv...



  • plizer schrieb:

    bei nur:

    myIter->first;
    

    Kommt auch der gleiche Fehler!

    Was ist mit ascs Lösung? (auf das make_pair achten!)



  • Zum Glück werden wir hier nach dem letzten großen Projekt eine Neuplanung machen (ca. September) und uns dann ganz neu einrichten in der Softwaresparte. Da steht dann alles zur Auswahl, auch Java oder .Net.

    Ich denk einfach schonmal an die Zeit :-).



  • plizer schrieb:

    bei nur:

    myIter->first;
    

    Kommt auch der gleiche Fehler!

    Logisch, liegt ja auch nicht an der Stelle, sondern, wie der Compiler schon sagt an dem make_pair... Aber dies habe ich nun das dritte mal geschrieben 😉



  • Artchi schrieb:

    plizer schrieb:

    bei nur:

    myIter->first;
    

    Kommt auch der gleiche Fehler!

    Was ist mit ascs Lösung? (auf das make_pair achten!)

    Hmm, weiss nicht genau, wie ich das einbauen soll bzw. was er genau meint mit:

    für make_pair ist halt vorher eine Typumwandlung der Einzeltypen nötig



  • // nicht:
    myMap.insert(make_pair("1", "Eins"));
    // sondern:
    myMap.insert(make_pair(string("1"), string("Eins")));
    // bzw. bei deinem MSVC6 bestimmt:
    string s1("1");
    string s2("eins");
    myMap.insert(make_pair(s1, s2));
    


  • plizer schrieb:

    Zum Glück werden wir hier nach dem letzten großen Projekt eine Neuplanung machen (ca. September) und uns dann ganz neu einrichten in der Softwaresparte. Da steht dann alles zur Auswahl, auch Java oder .Net.

    Ich denk einfach schonmal an die Zeit :-).

    Also wenn man einen solch krassen Technologie-Umstieg machen will/kann, frage ich mich, warum der Umstieg von MSVC6 auf MSVC8 so ein Problem sein soll?

    Naja, man steckt halt nicht drin...



  • Artchi schrieb:

    plizer schrieb:

    Zum Glück werden wir hier nach dem letzten großen Projekt eine Neuplanung machen (ca. September) und uns dann ganz neu einrichten in der Softwaresparte. Da steht dann alles zur Auswahl, auch Java oder .Net.

    Ich denk einfach schonmal an die Zeit :-).

    Also wenn man einen solch krassen Technologie-Umstieg machen will/kann, frage ich mich, warum der Umstieg von MSVC6 auf MSVC8 so ein Problem sein soll?

    Naja, man steckt halt nicht drin...

    Es ist mittlerweile eh keiner mehr der C++ Entwickler in der Firma. Ich bin der erste, der sich mit den 20 investierten Mannjahren beschäftigen darf. Daher ist es im Grunde egal, was man dann letztendlich neu nimmt, wenn man nicht mehr viel vom alten braucht.

    So, hab den Quellcode geändert (ok hätte ich drauf kommen müssen, mal wieder), nun funktioniert er! 🙂

    Vielen Dank an euch, vor allem an @artchi und @asc 👍



  • So, das wars für heute mit dem Programmieren, ich häng schon wieder fest und krieg es nicht hin den string aus "->" first irgendwie zu nutzen. 😡

    string s = myIter->first;
    

    error C2664: 'struct _TREEITEM *__thiscall CTreeCtrl::InsertItem(struct tagTVINSERTSTRUCTA *)' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<ch
    ar>,class std::allocator<char> >' in 'struct tagTVINSERTSTRUCTA *' nicht moeglich
    Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden

    Am besten such ich mir nen anderen Job... 😞



  • plizer schrieb:

    ...und krieg es nicht hin den string aus "->" first irgendwie zu nutzen. 😡

    string s = myIter->first;
    

    error C2664: 'struct _TREEITEM *__thiscall CTreeCtrl::InsertItem(struct tagTVINSERTSTRUCTA *)' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<ch
    ar>,class std::allocator<char> >' in 'struct tagTVINSERTSTRUCTA *' nicht moeglich
    Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden

    Punkt 1: Ist die Meldung auch aus der entsprechenden Zeile?

    Es sieht eher danach aus als das du einen Typ "struct tagTVINSERTSTRUCTA*" (der vermutlich via Typedef oder Makro einen anderen Namen bekommen hat (MFC?) einen String zuweist.

    Punkt 2: Wenn die Meldung aus der Zeile kommt: ist Vielleicht ->first von einem anderen Typ definiert (Sprich ist der Key der Map ein anderer Typ? map<FIRST, SECOND>)?

    cu André



  • Der gepostete Code scheint irgendwie nicht ganz zur Fehlermeldung zu passen...

    btw, statt make_pair könntest du auch my_map_type::value_type("hello", "world") verwenden.



  • Oh, Ihr beide habt Recht! Das passt nicht!
    Also jetzt werd ich mich erst wieder melden, wenn ich den Programmteil fertig bekomme. Ist ja schrecklich, dass ich jeden Scheiss fragen muss. Sry dafür und danke für eure Hilfe! 🙂



  • plizer schrieb:

    Vor 10 Jahren bin ich mit C++ angefangen und hatte das mit den Zeigern auch soweit verstanden, aber nach 7 Jahren Java geht das wahrscheinlich nie wieder in mein Hirn rein :(.

    plizer schrieb:

    Ist ja schrecklich, dass ich jeden Scheiss fragen muss. Sry dafür und danke für eure Hilfe! 🙂

    Zur seelischen Unterstützung:
    Bei mir war's genauso. Ich habe damals zwar mehr C programmiert und nicht so viel C++, aber nach einigen Jahren Java ist mir inzwischen einiges 'suspekt' und man fragt sich sooo oft, warum man sich um a und b kümmern will, wenn man doch nur c machen will.... der aufmerksame Leser wird das Wortspiel bemerkt haben 😃
    Also sei beruhigt. Mir geht's genauso. Die Konzentration auf die Fachlichkeit ist einfach nicht möglich, ohne viel Übung und Praxis.


Anmelden zum Antworten