Fehlermeldungen! Hilfe bitte!
-
Guten Morgen!
Also jemand aus diesem Forum hat mir ein Seite / Anleitung ausm netz genannt mit der ich ein "Grafikprogramm" erstellen kann!
[url]
http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/kap10.htm
[/url]
Habe dies soweit verstanden und auch umgesetzt! Nur beim compilieren bringt der mir folgende Fehler raus:public: CLine* GetLine(int nIndex); int GetLineCount(); CLine* AddLine(CPoint ptFrom, CPoint ptTo); CObArray m_oaLines;
Sollte vielleicht dazu sagen:
CLine habe ich als neue Klasse angelegt. Die Funktionen (GetLine....) sind Funktionen in der CPaintDoc.Ich habe jetzt schon ne zeimliche weile dran gesessen diese Fehler zu beheben, aber irgendwie schaffe ich das nicht!
Ich hoffe ihr könnt mir helfen und beDANKE mich schonmal!!
THX cu Bart
-
Guten Morgen!
Ich bin doch ein Depp
!
Habe doch glatt vergessen die Fehlermeldungen einzubinden!!
oje!!error C2143: Syntaxfehler : Fehlendes ';' vor '*' error C2501: 'CLine' : Fehlende Speicherklasse oder Typbezeichner error C2501: 'GetLine' : Fehlende Speicherklasse oder Typbezeichner error C2143: Syntaxfehler : Fehlendes ';' vor '*' error C2501: 'CLine' : Fehlende Speicherklasse oder Typbezeichner error C2501: 'AddLine' : Fehlende Speicherklasse oder Typbezeichner
SORRY!!!!!
Danke nochmal für eure Mühe und Hilfe!
THX cu Bart
-
Hallo,
hast du das beachtet, was auch in der Anleitung steht:
Bevor Sie Ihre Anwendung kompilieren und ausführen können, müssen Sie noch die Header-Datei für die Klasse CLine in die Quellcodedatei für die Dokument- und Ansichtsklassen einbinden. Fügen Sie dazu in beide Dateien (Tag10Doc.cpp und Tag10View.cpp) die Datei Line.h als Include-Datei hinzu, wie es Listing 10.8 zeigt.
Listing 10.8: Die Include-Anweisungen von CTag10Doc
1: #include "stdafx.h"
2: #include "Tag10.h"
3: #include "MainFrm.h"
4: #include "Line.h"
5: #include "Tag10Doc.h"Jetzt sollten Sie Ihre Anwendung kompilieren und ausführen können.
Auch wenn deine Anwendung nicht die oben genannte Struktur hat:
Wichtig ist immer, an die #includes zu denken (hier wohl vor allem an Line.h
)!
MfG
-
Hallo!
Ja das habe ich auch gelesen und die includes eingefügt!!! Also daran kann es nicht liegen!!
Trotzdem THX!!
Hast du sonst noch ne idee warum es nicht geht??
Danke schonmal !
cu Bart
-
Die Fehlermeldung ist ziemlich eindeutig, CLine ist an der Fehlerposition nicht bekannt, also mußt du danach suchen, warum es so ist. Zeige doch mal die ganze Datei, in der der Fehler vorkommt, damit man die #includes sehen kann, und dann zeige die Datei, in der die Klasse CLine definiert wird.
(Als Beweis für meine Behauptung, daß CLine unbekannt ist, kannst du vor die Klasse, in der das hier
public: CLine* GetLine(int nIndex); int GetLineCount(); CLine* AddLine(CPoint ptFrom, CPoint ptTo); CObArray m_oaLines;
steht, die Zeile
class CLine;
einfügen, und testen, ob es sich dann kompilieren läßt, bzw. feststellen, welche und ob andere(n) Fehler dann auftreten)
MfG
-
tagchen!
ja *ähem' also das mit der Zeile
class CLine;
hat jetzt funktioniert!
Aber ich versteh noch nicht warum das so ist.
Der Quellcodepublic: CLine* GetLine(int nIndex); int GetLineCount(); CLine* AddLine(CPoint ptFrom, CPoint ptTo); CObArray m_oaLines;
und somit die Fehlermeldungen die sich darauf beziehen stammen aus der CPaintDoc.h!
In der View und Doc.cpp habe ich die gesamten includes eingefügt etc.
Hätte ich includes in die doc.h einfügen sollen??? Ich glaube nicht!
Kannst du mir vielleicht erklären (bin halt Anfänger) warum ich nun sdiese zeile eingefügt habe!
Vielen Dank nochmal und schonmal für deine Mühe und Hilfe!!
THX cu Bart
-
Ok,
Bart Simpson schrieb:
die Fehlermeldungen die sich darauf beziehen stammen aus der CPaintDoc.h!
dann mußt du daran denken, daß die Header-Datei, in der CLine definiert wird, noch vor der #include-Anweisung für CPaintDoc.h stehen muß, also:
#include ... #include ... #include "Line.h" // Datei, die CLine definiert. CLine muß bekannt sein, bevor andere .h-Dateien CLine verwenden! #include "CPaintDoc.h" #include
je nach dem, wie die Abhängigkeiten sind, mußt du immer die Reihenfolge anpassen.
Bart Simpson schrieb:
Hätte ich includes in die doc.h einfügen sollen??? Ich glaube nicht!
Nein, ist schon in Ordnung so, du könntest dir evtl. noch mehr Probleme schaffen, wenn du das in Header includierst, versuche es zunächst zu vermeiden, also include die Line.h in die .cpp-Datei, die es benötigt.
Bart Simpson schrieb:
Kannst du mir vielleicht erklären (bin halt Anfänger) warum ich nun sdiese zeile eingefügt habe!
ja, ganz einfach, mit der von mir angegebenen Zeile wird einfach erreicht, daß der Compiler bei den Zeilen, die den Typ CLine verwenden:
CLine* GetLine(int nIndex); CLine* AddLine(CPoint ptFrom, CPoint ptTo);
vor Erreichen dieser Zeilen weiß, daß es einen CLine-Typ gibt, der irgendwo definiert sein mag. Er muß hier in diesem speziellen Fall über den genauen Aufbau von CLine nichts wissen, deshalb würde man hier nicht einmal die Header-Datei benötigen. Diese Technik, man nennt sie auch "Vorwärtsdeklaration" (man deklariert vorwärts/voraus: es gibt einen Typ class X, der im folgenden als bekannt angesehen werden soll), wird gerne verwendet und sollte verwendet werden, wenn möglich.
Aber versuche zunächst einmal, die Anweisung mit dem
class CLine;
wieder zu entfernen (oder einfach auskommentieren) und durch die geeignete Reihenfolge der includes die Sache zu regeln, damit du merkst, daß der Fehler auch durch das richtige Includieren behoben werden kann. Auf jeden Fall kannst du eine Vorwärtsdeklaration auch in anderen Situationen irgendwann sicher einmal gebrauchen, auch wenn es hier nicht nötig ist.
MfG
-
tagchen!
Vielen Dank für deine Hilfe! hat sehr geholfen!
Sorry das ich erst jetzt reagiere, hatte aber gerade anderen Stress!!
Also denne THX!!
cu Bart