seltsamer Fehler



  • hoi,

    Ich hoffe ich bin hier richtig mit meinem Problem.

    Ich will eine liste machen, was an sich kein problem darstellt, nur kriege ich diesmal einen seltsamen Fehler:
    --------------------Configuration: editor - Win32 Debug--------------------
    Compiling...
    editor.cpp
    e:\schule\vcpp\editor\generator.hpp(3) : error C2143: syntax error : missing ';' before '
    '
    e:\schule\vcpp\editor\generator.hpp(3) : error C2501: 'listenElement' : missing storage-class or type specifiers
    e:\schule\vcpp\editor\generator.hpp(3) : error C2501: 'erstesLE' : missing storage-class or type specifiers
    generator.cpp
    pageElem.cpp
    Error executing cl.exe.*

    Am code kann das nicht liegen, da ich exakt den gleichen Code aus einer anderen funktionieren Liste eingefügt habe. Nur die Header-Dateinamen beim includen behalten.

    Der folgende Code funktioniert in dem altem Project einwandfrei. Kopiere ich ihn in den neuen, kommt der oben genannte Fehler. Programmiere unter Visual C++ 6. Vielleicht habe ich etwas falsch beim hinzufügen der header-dateien zum Projekt gemacht?

    editor.cpp:

    #include <iostream.h>
    #include <string.h>
    #include <stdlib.h>
    
    #include "generator.hpp"
    #include "pageElem.hpp"
    
    void main(void){
     liste Liste;
    
    }
    

    generator.hpp

    class liste{
    private:
     listenElement *erstesLE; //das wird als fehler markiert (missing ';' before '*')
    public:
     liste();
    };
    

    generator.cpp

    #include <iostream.h>
    #include <string.h>
    #include <stdlib.h>
    
    #include "pageElem.hpp"
    #include "generator.hpp"
    
    liste::liste() { //Konstruktor
     erstesLE = new listenElement(0);
     erstesLE->next = NULL;
    }
    

    pageElem.hpp:

    class listenElement{
    public:
     int Nr;
     listenElement *next;
     listenElement(int kNr); //Konstruktordeklaration
    };
    

    pageElem.cpp:

    #include <string.h>
    #include "pageElem.hpp"
    
    listenElement::listenElement(int kNr){ //Konstruktordefinition
     this->Nr = kNr;
    }
    

    Danke im Voraus.



  • Tja, der Compiler kennt deine Klasse listenElement noch nicht. Entweder machst du sie ihm per forward-Deklararion bekannt oder du inkludierst direkt die <pageElem.hpp>.



  • ja, das habe ich heute in der Schule rausgefunden. 🙂
    Mann musste in generator.hpp, pageElem.hpp includen.

    komischerweise gehts im anderem Projekt auch ohne dies. hmm..



  • Habe das selbe Problem, kriege es aber nicht so einfach gelöst...

    c:\eigene dateien\myprojects\sp\soundpitcher\tkkdlg.h(56) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'm_dSPD'
    c:\eigene dateien\myprojects\sp\soundpitcher\tkkdlg.h(56) : error C2501: 'CSoundPitcherDlg' : Fehlende Speicherklasse oder Typbezeichner
    c:\eigene dateien\myprojects\sp\soundpitcher\tkkdlg.h(56) : error C2501: 'm_dSPD' : Fehlende Speicherklasse oder Typbezeichner
    SoundPitcherDlg.cpp
    

    habe dann in Tkkdlg.h die SoundpitcherDlg.h includiert, aber er kennt die Klasse und die Funktionen trotzdem nicht.... (also die selbe Fehlermeldung bleibt)
    Hab ich was übersehen ?



  • Schau mal ob Dir der Beitrag weiterhilft



  • Thx.
    Denke das ist auch genau mein Problem, das jede Klasse die andere Includieren will.

    Geht das denn nur mit Zeigern zu lösen ? Gibts keine andere möglichkeit, so das ich (was mir lieber ist) die Funktionen einer anderen Klasse mit einem Klassenvariablennamen ansprechen kann ?


Anmelden zum Antworten