Technician Geschrieben 3. April 2005 Geschrieben 3. April 2005 Hallo, diese Angelegenheit treibt mich zur schieren Verzweiflung... Klasse SampleClass enthält Zeiger auf Klasse MyViewClass und umgekehrt (MyViewClass ist von CFormView abgeleitet, falls das wichtig sein sollte). Problem wurde mit Vorwärtsdeklaration gelöst: in MyViewClass.h steht #include "SampleClass.h" in SampleClass.h steht class MyViewClass; SampleClass bekommt im Konstruktor einen Pointer auf ein Class1-Objekt mitgegeben: SampleClass::SampleClass(MyViewClass* pVC) { myViewPointer=pVC; } Das funktioniert noch einwandfrei. Nun möchte ich in SampleClass eine Methode der anderen Klasse aufrufen: myViewPointer->Method(); und erhalte die Fehlermeldung(en): F:\_dev\_vcpp\my_projects\Try\SampleClass.cpp(214) : error C2027: Verwendung des undefinierten Typs "MyViewClass" F:\_dev\_vcpp\my_projects\Try\SampleClass.h(9) : Siehe Deklaration von 'MyViewClass' F:\_dev\_vcpp\my_projects\Try\SampleClass.cpp(214) : error C2227: Der linke Teil von '->Method' muss auf Klasse/Struktur/Union zeigen Wer kann mir weiterhelfen? Irgendwie muss das doch funktionieren Gruß, Technician Zitieren
Klotzkopp Geschrieben 3. April 2005 Geschrieben 3. April 2005 Wie wäre es mit einem #include "MyViewClass.h" in SampleClass.cpp? Zitieren
Technician Geschrieben 3. April 2005 Autor Geschrieben 3. April 2005 Hallo Klotzkopp, das habe ich bereits versucht; es führt zu noch mehr Fehlern (u.a., dass auch die Document-Klasse nicht mehr gefunden wird) - kann dir die Fehlermeldungen morgen abend posten (bin an einem anderen Rechner). Gruß, Technician Zitieren
Crush Geschrieben 4. April 2005 Geschrieben 4. April 2005 Es wäre aber auch möglich, daß die Deklratation von MyViewClass nicht einwandfrei ist - das hätte die gleichen Fehlermeldungen zur Folge. Zitieren
Technician Geschrieben 4. April 2005 Autor Geschrieben 4. April 2005 Es wäre aber auch möglich, daß die Deklratation von MyViewClass nicht einwandfrei ist - das hätte die gleichen Fehlermeldungen zur Folge. Was meinst du damit? Ich selbst habe an MyViewClass noch nichts geändert außer dem Hinzufügen der einen Methode die aufgerufen werden soll. Ansonsten wurde die Klasse automatisch erzeugt. Zitieren
Technician Geschrieben 4. April 2005 Autor Geschrieben 4. April 2005 Wie wäre es mit einem #include "MyViewClass.h" in SampleClass.cpp? Ich habe jetzt noch einmal #include "MyViewClass.h" in SampleClass.cpp hinzugefügt. Der Effekt des ganzen ist, dass nun diverse Dinge in "MyViewClass.h" nicht mehr erkannt werden. Konkret erhalte ich nun folgende Fehlermeldungen: MyViewClass.h(27): error C2065: 'IDD_MATICA_FORM' : nichtdeklarierter Bezeichner MyViewClass.h(27) : error C2057: Konstanter Ausdruck erwartet MyViewClass.h(34) : error C2143: Syntaxfehler : Fehlendes ';' vor '*' MyViewClass.h(34) : error C2501: 'MyViewClass': Fehlende Speicherklasse oder Typbezeichner MyViewClass.h(34) : error C2501: 'GetDocument' : Fehlende Speicherklasse oder Typbezeichner das ganze bezieht sich im Quellcode auf die fett gedruckten Zeilen - die oberen zwei Fehlermeldungen auf die erste, die letzten drei auf die andere: public: //{{AFX_DATA(MyViewClass) enum { IDD = IDD_MATICA_FORM }; CString m_Console; CString m_List; //}}AFX_DATA public: CMaticaDoc* GetDocument(); Die vorherigen Fehler tauchen übrigens nicht mehr auf - was mich angesichts der neuen Fehler auch nicht wirklich glücklich macht . Zitieren
Klotzkopp Geschrieben 4. April 2005 Geschrieben 4. April 2005 MyViewClass.h(27): error C2065: 'IDD_MATICA_FORM' : nichtdeklarierter BezeichnerDas sollte mit einem #include "resource.h" zu beheben sein, vor dem anderen #include. MyViewClass.h(34) : error C2501: 'MyViewClass': Fehlende Speicherklasse oder Typbezeichner MyViewClass.h(34) : error C2501: 'GetDocument' : Fehlende Speicherklasse oder TypbezeichnerIm Code steht CMaticaDoc, nicht MyViewClass :confused: Jedenfalls könntest du zwischen die beiden #includes noch eines für die Headerdatei einfügen, in der diese Klasse deklariert wird. Zitieren
Technician Geschrieben 4. April 2005 Autor Geschrieben 4. April 2005 Im Code steht CMaticaDoc, nicht MyViewClass :confused: sorry, ist "MyDocClass". (habe die Klassen hier fürs Forum umbenannt, damit übersichtlicher - und das dabei übersehen...) ... Jedenfalls, jetzt funktioniert alles Mich irritierte es sehr, dass ich diese Includes, die du mir jetzt hilfreicherweise empfohlen hast, zuvor (bevor ich die Vorwärtsdeklaration eingebaut hatte) nicht benötigte. Vielen Dank! Technician Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.