Unbekannte Probleme mit map



  • Was ist jetzt mit den Fehlermeldung?



  • Johannes Maier schrieb:

    Danke schonmal für die superschnellen Antworten 😉
    Ok, das mit dem namespace werd ich lassen, aber wo setze ich diese Optionen genau? Bin noch recht neu und am Lernen, map brauche ich für Stroutrups kleinen Taschenrechner 😉

    Wie compilierst Du denn? Von der Kommandozeile aus, nimm

    cl /GX /GR datei.cpp
    

    Von der IDE aus, geh in die Projektoptionen und schalte "Ausnahmebehandlungen" und "Laufzeit-Typueberpruefung" ein, bei der Uebersicht der Kommandozeile fuer den Compiler (auch in den Projektoptionen) muessen die Optionen "/EHsc" bzw. "/GX" und "/GR" gesetzt sein. Siehe auch das in VC++ integrierte Online-Handbuch.



  • @werauchimmer: hier bitte

    f:\programme\microsoft visual c++\vc98\include\xtree(629) : error C2059: syntax error : '?'
    f:\programme\microsoft visual c++\vc98\include\xtree(629) : error C2065: '_Y' : undeclared identifier
    f:\programme\microsoft visual c++\vc98\include\xtree(629) : error C2275: '_A' : illegal use of this type as an expression
    f:\programme\microsoft visual c++\vc98\include\xtree(629) : error C2143: syntax error : missing ',' before ')'
    f:\programme\microsoft visual c++\vc98\include\xtree(631) : error C2951: template declarations are only permitted at global or namespace scope
    f:\programme\microsoft visual c++\vc98\include\xtree(632) : error C2976: '_Tree' : too few template arguments
    f:\programme\microsoft visual c++\vc98\include\xtree(602) : see declaration of '_Tree'
    f:\programme\microsoft visual c++\vc98\include\xtree(633) : error C2143: syntax error : missing ',' before '<='
    f:\programme\microsoft visual c++\vc98\include\xtree(633) : error C2433: 'bool' : 'inline' not permitted on data declarations
    f:\programme\microsoft visual c++\vc98\include\xtree(633) : error C2059: syntax error : 'operator <op>'
    f:\programme\microsoft visual c++\vc98\include\xtree(635) : error C2143: syntax error : missing ')' before '{'
    f:\programme\microsoft visual c++\vc98\include\xtree(635) : error C2059: syntax error : '{'
    f:\programme\microsoft visual c++\vc98\include\xtree(635) : error C2143: syntax error : missing ';' before '{'
    f:\programme\microsoft visual c++\vc98\include\xtree(635) : error C2447: missing function header (old-style formal list?)
    f:\programme\microsoft visual c++\vc98\include\xtree(636) : error C2954: template definitions cannot nest
    f:\programme\microsoft visual c++\vc98\include\map(44) : error C2039: 'reference' : is not a member of '_A'
    f:\programme\microsoft visual c++\vc98\include\xtree(632) : see declaration of '_A'
    f:\programme\microsoft visual c++\vc98\include\map(140) : see reference to class template instantiation 'std::map<_K,_Ty,_Pr,_A>' being compiled
    f:\programme\microsoft visual c++\vc98\include\map(44) : error C2146: syntax error : missing ';' before identifier '_Tref'
    f:\programme\microsoft visual c++\vc98\include\map(140) : see reference to class template instantiation 'std::map<_K,_Ty,_Pr,_A>' being compiled
    f:\programme\microsoft visual c++\vc98\include\map(44) : error C2501: '_Tref' : missing storage-class or type specifiers
    f:\programme\microsoft visual c++\vc98\include\map(140) : see reference to class template instantiation 'std::map<_K,_Ty,_Pr,_A>' being compiled
    f:\programme\microsoft visual c++\vc98\include\map(48) : error C2040: 'reference' : ' &' differs in levels of indirection from 'int'
    f:\programme\microsoft visual c++\vc98\include\map(140) : see reference to class template instantiation 'std::map<_K,_Ty,_Pr,_A>' being compiled
    f:\programme\microsoft visual c++\vc98\include\map(92) : error C2143: syntax error : missing ';' before '['
    f:\programme\microsoft visual c++\vc98\include\map(140) : see reference to class template instantiation 'std::map<_K,_Ty,_Pr,_A>' being compiled
    f:\programme\microsoft visual c++\vc98\include\map(92) : error C2501: '_Tref' : missing storage-class or type specifiers
    f:\programme\microsoft visual c++\vc98\include\map(140) : see reference to class template instantiation 'std::map<_K,_Ty,_Pr,_A>' being compiled
    f:\projekte\testtest\erwer.cpp(4) : error C2065: 'map' : undeclared identifier
    f:\projekte\testtest\erwer.cpp(4) : error C2062: type 'int' unexpected
    Error executing cl.exe.

    @Power Off:
    In den Project Options steht /GX schon drin, durch Hinzufügen von /GR hat sich nichts geändert.
    Als ich mal in die Datei geschaut hab (ich versteh da kaum was) fielen mir diese Sachen wie fehlende Klammern auch auf ... Ich hab kA woher das kommt, hab vorher schon einmal mit map gearbeitet ohne Probleme, vector z.B. geht auch jetzt noch 😞



  • neuinstallieren?



  • Johannes Maier schrieb:

    Als ich mal in die Datei geschaut hab (ich versteh da kaum was) fielen mir diese Sachen wie fehlende Klammern auch auf ... Ich hab kA woher das kommt, hab vorher schon einmal mit map gearbeitet ohne Probleme, vector z.B. geht auch jetzt noch 😞

    Benutzt noch jemand anders den Computer zum Compilieren? Vielleicht hat der vermeintliche Fehler in den Include-Dateien korrigiert. 😉 -- dann hilft wirklich nur noch, den Compiler neu zu installieren, und das Include-Verzeichnis in ein ZIP-File zu packen, um es das naechste Mal parat zu haben. 😉

    Ist das uebrigens VC++ 6.0? Wenn ja, dann solltest Du sowieso bei Gelegenheit auf VC++ .NET 2002 oder 2003 umsteigen, die sind wesentlich standardkonformer.



  • Wenn Upgraden, dann auf VC++ 2003 und nicht 2002. 2002 ist nämlich nicht standardkonformer als der olle 6.0.



  • Idee 1)
    du hast Language Extension abgeschalten

    Idee 2)
    du hast in einer Header Datei die direkt ueber map inkludiert wird eine Klammer vergessen



  • Artchi schrieb:

    Wenn Upgraden, dann auf VC++ 2003 und nicht 2002. 2002 ist nämlich nicht standardkonformer als der olle 6.0.

    doch. etwas.



  • Power Off schrieb:

    Erstmal: Benutze niemals "using namespace std", weil das sonst zur Kollision mit eigenen Typen fuehren kann

    Bitte diesen Käse einfach ignorieren.

    Ein using namespace xyz nach allen includes in einer cpp-Datei ist völlig harmlos, da mögliche Kollisionen a) vom Compiler entdeckt und b) lokal auf die eine cpp-Datei beschränkt sind. Sollte es also zu Kollisionen kommen, kann man das Problem leicht beheben. Die Anwendung eines using namespace xyz nach allen includes in einer cpp-Datei ist also reine Geschmacksache. Die einen sind optimistisch, erleben im Zweifelsfall eine Überraschung und müssen dann nacharbeiten, die anderen sind pessimistisch, erleben keine Überraschungen und müssen dafür von Anfang an etwas mehr arbeiten.

    Anders sieht es bei using-Deklarationen bzw. Direktiven in Headern aus. In Headern habe solche in der Tat nichts zu suchen.



  • HumeSikkins schrieb:

    Anders sieht es bei using-Deklarationen bzw. Direktiven in Headern aus. In Headern habe solche in der Tat nichts zu suchen.

    Uebrigens kann man "using" auch innerhalb einer Funktion oder Methode verwenden und damit den Scope noch weiter einschraenken.



  • Power Off schrieb:

    HumeSikkins schrieb:

    Anders sieht es bei using-Deklarationen bzw. Direktiven in Headern aus. In Headern habe solche in der Tat nichts zu suchen.

    Uebrigens kann man "using" auch innerhalb einer Funktion oder Methode verwenden und damit den Scope noch weiter einschraenken.

    In welchem Zusammenhang diese (mir durchaus bekannte) Tatsache mit dem Zitat steht, ist mir zwar völlig schleierhaft, aber schön das du noch mal darauf hingewiesen hast 🙄



  • HumeSikkins schrieb:

    Sollte es also zu Kollisionen kommen, kann man das Problem leicht beheben.

    Wenn Du meinst ...


Anmelden zum Antworten