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.


Anmelden zum Antworten