Problem mit Templates
-
Möge die Macht mit euch sein ..
Ich habe ein kleines Problem mit dem Folgenden Programmcode:
#ifdef _DEBUG #define new DEBUG_NEW #endif CList <CPoint,CPoint> PointList;
Dies ist der Beginn einer header-Datei, die ich in einem mit dem Assistenten von V-Studio .NET für eine MDI-MFC Anwendung erstellt habe.
Die Programm heißt Lara, die Header Datei heißt FNM-lara_datenspeicher.h und ist (in der Lara.cpp wie folgt eingefügt:
// Lara.cpp : Definiert das Klassenverhalten für die Anwendung. // #include "stdafx.h" #include "Lara.h" #include "MainFrm.h" #include "ChildFrm.h" #include "LaraDoc.h" #include "LaraView.h" #ifdef _DEBUG #define new DEBUG_NEW #endif #include "FNM-lara_datenspeicher.h" // CLaraApp
Beim kompilieren erhalte ich die Fehlermeldung:
error C2143: Syntaxfehler: Es fehlt ';' vor '<'
mit Verweis auf Zeile 5 (
CList <CPoint,CPoint> PointList;
)der header-Datei.
Ich muss zugebene, dass meine Ratlosigkeit (auch nach Studium von MSDN und GOOGLE) nur noch von meinem Mangel an Erfahrung mit Templates übertroffen wird. Kann mir jemand weiterhelfen?
-
upsa n doppelpost sorry ... der unter dem hier is aktuell der
-
Computer_Padawan schrieb:
Ich habe ein kleines Problem mit dem Folgenden Programmcode:
#ifdef _DEBUG #define new DEBUG_NEW #endif CList <CPoint,CPoint> PointList;
sollte es nich eher heißen ?
#ifdef _DEBUG #define DEBUG_NEW 1 CList<CPoint> PointList; #endif
CPoint ist doch schon ein Punkt mit 2 Koordinaten oder nicht? Warum also ne
Liste erstellen mit 2mal2 Koordinaten pro Item?
Außerdem verwendest du einen Include Guard der aber auch nur was nützt,
wenn du den Code in die #ifdef ....Code.... #endif Anweisung schreibst.
Außerdem ist new ein Schlüsselwort und sollte lieber nicht mit ner Define
überschrieben werden... geht das überhaupt? hm.. naja viele Fehler in 5 Zeilen
hast de da...Computer_Padawan schrieb:
// Lara.cpp : Definiert das Klassenverhalten für die Anwendung. // #include "stdafx.h" #include "Lara.h" #include "MainFrm.h" #include "ChildFrm.h" #include "LaraDoc.h" #include "LaraView.h" #ifdef _DEBUG // das ist hier #define new DEBUG_NEW // ist hier total #endif // unnütz und kann weg // mit new wie oben... sollte/darf/kann // nicht gut gehen... #include "FNM-lara_datenspeicher.h" // CLaraApp
mfg
mightymop
-
mightymop schrieb:
Außerdem verwendest du einen Include Guard der aber auch nur was nützt,
wenn du den Code in die #ifdef ....Code.... #endif Anweisung schreibst.Da verstehst du was falsch.
#ifdef _DEBUG #define new DEBUG_NEW #endif
ist kein Include Guard. Sowas wird verwendet, um eigene Funktionalität über new zu nutzen, zB mit einem überladenen Operator new. So viele Fehler in 5 Zeilen gibt's also gar nicht.
@Computer_Padawan
Momentan sehe ich zwei Ansätze für dein Problem. Entweder ist CList an besagter Stelle noch nicht bekannt oder dir fehlt ein Semikolon in einer der davor eingebundenen Header Dateien, LaraDoc.h, LaraView.h oder wo auch immer.