xcvbm Geschrieben 14. November 2002 Geschrieben 14. November 2002 ich habe in der .h Datei meiner CDoc Klasse gerade verschiedene Änderungen gemacht. Danach wollte ich auf die .cpp Datei zugreifen. Dann kam diese Fehlermeldung Diese Fehlermeldung kommt nun immer für alle Elemente der Klasse. Ich habe dann die Änderungen versuchsweise wieder rückgängig gemacht. Aber leider bringt das jetzt nix mehr. Die Änderungen sind diese: // Implementierung public: //ab hier______________________ UINT GetColor(); static const COLORREF m_crColors[8]; CLine* GetLine(int nIndex); int GetLineCount(); CLine* AddLine(CPoint ptFrom, CPoint ptTo); CObArray m_oaLines; virtual ~CTag11Doc(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generierte Message-Map-Funktionen protected: #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generierte Message-Map-Funktionen protected: afx_msg void OnColorCommand(UINT nID); afx_msg void OnUpdateColorUI(CCmdUI* pCmdUI); */ //bis hier_________________ //{{AFX_MSG(CTag11Doc) // HINWEIS - An dieser Stelle werden Member-Funktionen vom Klassen Assistenten eingefügt und entfernt. // Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN! //}}AFX_MSG DECLARE_MESSAGE_MAP() private: UINT m_nColor; CObArray m_oaLines; }; [/PHP] Die Änderungen habe ich nur per Hand eingetragen, nicht mit dem Klassenassistenten oder sowas. Vielleicht habt ihr eine Idee, der Compiler meldet mir noch freundliche 52 Fehler, die ich mal eben nicht poste. Ich komm damit leider nicht selber klar. Vielen Dank im Voraus. Christoph Zitieren
Klotzkopp Geschrieben 14. November 2002 Geschrieben 14. November 2002 Originally posted by Christoph F. */Gibt es dazu ein passendes Gegenstück? Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 nee, das ist nur ein rest von dem versuch das mal auszukommentieren. war vorher etwas weiter oben noch /* . Wirkt sich aber nich aus wenn ich das weg nehme, leider. Zitieren
Klotzkopp Geschrieben 14. November 2002 Geschrieben 14. November 2002 Schließe bitte mal Visual C++, lösche alle Dateien mit der Endung ncb, opt, plg und clw im Projektordner, und versuche es nochmal. Wenn das nicht hilft, sollten wir es doch über die Fehler versuchen.Womöglich fehlt nur irgendwo ein Semikolon oder eine Klammer. Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 hat leider nix gebracht mit dem löschen. soll ich mal (den anfang) die Fehler posten? Zitieren
fmarx2000 Geschrieben 14. November 2002 Geschrieben 14. November 2002 Originally posted by Christoph F. Die Änderungen habe ich nur per Hand eingetragen, nicht mit dem Klassenassistenten oder sowas. Vielleicht habt ihr eine Idee, der Compiler meldet mir noch freundliche 52 Fehler, die ich mal eben nicht poste. Ich komm damit leider nicht selber klar. Vielen Dank im Voraus. Christoph Was bringt denn der Compiler für Fehlermeldungen ? Steht in den Meldungen irgendwas darüber welche Funktion nicht implementiert ist ? Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 Vielleicht ist es besser ihr kuckt euch das mal wirklich live an. Es ist das komplette Projekt, ohne den Debug Ordner, als tag11.zip Datei (habe den Norton Antivirus laufen). Download ! Aber wenn das nicht so gut ist, schicke ich auch gern die Fehlermeldungen. Ich will hier nicht so dreist faul erscheinen, denke mir nur das es sinnvoller ist. Sagt bescheid wenn es nicht so ist. Christoph Zitieren
Klotzkopp Geschrieben 14. November 2002 Geschrieben 14. November 2002 Wie hast Du das bloß geschafft? Line.cpp CLine::CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor) -> diesen Ctor hast Du nicht deklariert. tag11doc.cpp: IMPLEMENT_DYNCREATE(CTag11Doc, CDocument) BEGIN_MESSAGE_MAP(CTag11Doc, CDocument) -> ist doppelt, die ersten Exemplare müssen weg. CLine *pLine = new CLine(ptFrom, ptTo, m_crColors[m_nColor]); -> so einen Ctor hast Du weder deklariert noch implementiert. const COLORREF CTag10Doc::m_crColors[8] = { -> Die Klasse heißt jetzt CTag11Doc. tag11doc.h #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif -> doppelt. UINT m_nColor; CObArray m_oaLines; -> doppelt. Zeile 76: }; -> muss weg. //{{AFX_MSG(CTag11Doc) // HINWEIS - An dieser Stelle werden Member-Funktionen vom Klassen Assistenten eingefügt und entfernt. // Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN! //}}AFX_MSG DECLARE_MESSAGE_MAP() -> doppelt, sollte weg, damit der Klassenassistent funktioniert. Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 kann ich die dateien aus dem Projektverzeichnis auch mit dem normalen Editor bearbeiten??? Ich komme, wie gesagt, nicht mehr in die Dateien rein. Ich kann da nix mehr machen. Läuft das bei dir noch? Zitieren
Klotzkopp Geschrieben 14. November 2002 Geschrieben 14. November 2002 Geh einfach nicht über die Klassenansicht, sondern über die Dateiansicht. Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 dumme frage, das sind ja bloß textdateien. hmm. Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 schei0e da habe ich mich ja voll reingeritten. ist mir sowas von peinlich. voll daneben, mit m kopf wie mache ich das? was meinst du mit Ctor? Line.cpp CLine::CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor) -> diesen Ctor hast Du nicht deklariert. Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 habs schon rausgekriegt Zitieren
Klotzkopp Geschrieben 14. November 2002 Geschrieben 14. November 2002 Originally posted by Christoph F. schei0eNa, nicht fluchen wie mache ich das? was meinst du mit Ctor?Ctor ist eine gängige Abkürzung für Konstruktor. Die Deklaration eben dieses Ctor, den Du da implementierst, sollte in Line.h stehen und in etwa so aussehen: CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor); Wo du gerade da bist, kannst Du den hier löschen, denn den deklarierst Du, implementierst ihn aber nicht: CLine(CPoint ptFrom, CPoint ptTo); Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 jetzt habe ich einiges kapiert und gelernt. leider habe anscheinend schon wieder ein paar sachen durcheinander gebracht: in CTag11View habe ich diese Funktion: void CTag11View::OnMouseMove(UINT nFlags, CPoint point) { // Prüfen, ob linke Maustaste gedrückt if ((nFlags & MK_LBUTTON) == MK_LBUTTON) { // Wurde Maus aufgefangen? if (GetCapture() == this) { // Gerätekontext holen CClientDC dc(this); // Die Linie ins Dokument aufnehmen CLine *pLine = GetDocument()->AddLine(m_ptPrevPos, point); //hierhier // Aktuellen Linienzug zeichnen pLine->Draw(&dc); // Aktuellen Punkt als vorherigen speichern m_ptPrevPos = point; } } CView::OnMouseMove(nFlags, point); } [/PHP] bei "//hierhier" gibt es einen Pointer der auf CLine und dann auf Addline verweist. Das dumme ist, das Addline nicht in CLine steht sondern inCTag11Doc. Ausserdem erwartet Addline 3 Argumente, der aufruf übergibt aber nur 2. Habe ich das wieder falsch zusammengefummelt oder lese ich das falsch? Habe noch mal die momentane Version hier. Download No2 ! Christoph Zitieren
xcvbm Geschrieben 14. November 2002 Autor Geschrieben 14. November 2002 achja, wenn man sich den kram runterlädt findet man in den Dateien die Kommentare //hier - welche für weniger wilde Änderungen stehen und //hierhier die für die wilden Änderungen sind. Ist so ne persönliche "Suchmarke", wenn was nicht funkts - gleich nach //hierhier suchen und man findet die fiesen stellen. naja soviel dazu Zitieren
Klotzkopp Geschrieben 14. November 2002 Geschrieben 14. November 2002 Originally posted by Christoph F. bei "//hierhier" gibt es einen Pointer der auf CLine und dann auf Addline verweist. Das dumme ist, das Addline nicht in CLine steht sondern inCTag11Doc. Ausserdem erwartet Addline 3 Argumente, der aufruf übergibt aber nur 2. Habe ich das wieder falsch zusammengefummelt oder lese ich das falsch? Du liest zum Teil falsch. Der CLine-Zeiger nimmt hier nur den Rückgabewert von AddLine entgegen, hat aber mit dem Aufruf sonst nichts zu tun. Aufgerufen wird AddLine über den Rückgabewert von GetDocument, der einen Zeiger auf die aktuelle CTag11Doc-Instanz enthält. Das ist also schon mal in Ordnung. Mit den Argumenten hast Du allerdings recht. AddLine ist deklariert und implementiert als: CLine* AddLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor) Zitieren
xcvbm Geschrieben 15. November 2002 Autor Geschrieben 15. November 2002 so. jetzt habe ich wohl alle Fehler weggehauen. Alle Fehler ? Nein... leider nicht. was ist dieser? --------------------Konfiguration: tag11 - Win32 Debug-------------------- Linker-Vorgang läuft... Line.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual struct CRuntimeClass * __thiscall CLine::GetRuntimeClass(void)const " (?GetRuntimeClass@CLine@@UBEPAUCRuntimeClass@@XZ) Debug/tag11.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise Fehler beim Ausführen von link.exe. tag11.exe - 2 Fehler, 0 Warnung(en) Christoph Zitieren
Klotzkopp Geschrieben 15. November 2002 Geschrieben 15. November 2002 Hast Du vielleicht die folgende Zeile in Line.cpp entfernt oder auskommentiert? IMPLEMENT_SERIAL (CLine, CObject, 1) Zitieren
xcvbm Geschrieben 15. November 2002 Autor Geschrieben 15. November 2002 ja, habe ich wohl (ich bin manchmal durcheinander, und das ist blöd.) leider kommt dann die Fehlermeldung, mit der ich auch nix anzufangen weiß --------------------Konfiguration: tag11 - Win32 Debug-------------------- Kompilierung läuft... Line.cpp C:\Programme\Microsoft Visual Studio\MyProjects\tag11\Line.cpp(16) : error C2512: 'CLine' : Kein geeigneter Standardkonstruktor verfuegbar Fehler beim Ausführen von cl.exe. tag11.exe - 1 Fehler, 0 Warnung(en) ich habe das gefühl gleich haben wird es.(?) mann, ich hoffe ich nerve nich allzusehr? Zitieren
Klotzkopp Geschrieben 15. November 2002 Geschrieben 15. November 2002 Originally posted by Christoph F. C:\Programme\Microsoft Visual Studio\MyProjects\tag11\Line.cpp(16) : error C2512: 'CLine' : Kein geeigneter Standardkonstruktor verfuegbar Wenn Du irgendeinen Konstruktor für eine Klasse angibst, dann stellt der Compiler nicht mehr automatisch einen Default-Konstruktor für die Klasse zur Verfügung. Du brauchst einen Konstruktor für CLine, der keine Parameter (oder Defaults für alle Parameter) hat. In der letzten Version war CLine::CLine() noch drin. Hast Du den entfernt? Zitieren
xcvbm Geschrieben 15. November 2002 Autor Geschrieben 15. November 2002 ja habe ich entfernt. ich dachte da nichts drinsteht CLine::Cline() { } wird es wohl ein Fehler von mir sein, weil es ja das andere CLine ja auch gibt. CLine::CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor) { // Anfangs- und Endpunkte initialisieren m_ptFrom = ptFrom; m_ptTo = ptTo; m_crColor = crColor; } Ich habe das mal eben über MemberFunktion hinzufügen wieder reingemacht. Ich glaube das war vorher auch schon irgendwie kaputt (bevor ich es gelöscht habe) UND ICH DREH DURCH!!!! Es läuft. Ich glaube das ich dir zu echtem Dank verpflichtet bin! Du hast mir sehr viel Geholfen, vielen Dank für diese Geduld mit mir 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.