Announcement

Collapse
No announcement yet.

Fehler beim kompilieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler beim kompilieren

    Hallo, Leute. Da bin ich wieder und weil ich Anfänger in
    C++ bin, brauche ich wieder Ihre Hilfe.Ich gehe jetzt
    einen Tutorial für Visual C++.6 durch, ich habe aber
    Visual Studio.Net 2003. Und hier gibt es einige
    Unterschiede. Es geht um ein Grafik-Programm.
    Ein SDI-Anwendung. Es soll etwas gezeichnet werden.
    Und dann gespeichert.Und dann wieder gezeigt.
    Also, ich habe eine neue Klasse <B>CLine</B>erstellt.
    In <B>Tag10_1Doc.h</B> habe ich einen Funktion
    <B>AddLine(CPoint ptFrom, CPoint ptTo)</B>eingefügt
    mit Funktionstyp <B>CLine*</B> und mit gleichem
    Funktionstyp noch eine Funktion <B>GetLine(int nIndex)</B>.
    Beim kompilieren ich bekomme immer Fehler:
    <PRE>
    Tag10_1Doc.h(40): error C2143: syntax error : missing ';' before '*'
    Tag10_1Doc.h(42): error C2143: syntax error : missing ';' before '*'
    Tag10_1Doc.h(40): error C2501: 'CTag10_1Doc::AddLine' : missing storage-class or type specifiers
    Tag10_1Doc.h(40): error C2501: 'CTag10_1Doc::CLine' : missing storage-class or type specifiers
    Tag10_1Doc.h(42): error C2501: 'CTag10_1Doc::CLine' : missing storage-class or type specifiers
    Tag10_1Doc.h(42): error C2501: 'CTag10_1Doc::GetLine' : missing storage-class or type specifiers
    Tag10_1Doc.h(40): warning C4183: 'AddLine': missing return type; assumed to be a member function returning 'int'
    Tag10_1Doc.h(42): warning C4183: 'GetLine': missing return type; assumed to be a member function returning 'int'
    </PRE>
    Da sind diese zwei Funktionen. Die sind im Tag10_1Doc.h als public deklariert.

    <PRE>
    CLine * AddLine(CPoint ptFrom, CPoint ptTo) //(Zeile 40)
    {
    //Ein neues CLine-Object erzeugen
    CLine *pLine = new CLine(ptFrom, ptTo);
    try
    {
    //Die neue Linie in das Object-Array einfügen
    m_oaLines.Add(pLine);
    //Dokument als bearbeitet markieren
    SetModifiedFlag();
    }
    //Ist speicherausnahme aufgetretten?
    catch(CMemoryException* perr)
    {
    //Meldung für Benutzer, schlechte
    //Neuigkeiten mitteilen
    AfxMessageBox("Speichermangel", MB_ICONSTOP | MB_OK);
    //Wurde Linienobject erzeugt?
    if(pLine)
    {
    //Object löschen
    delete pLine;
    pLine = NULL;
    }
    //Ausnahmeobject löschen
    perr->Delete();
    }
    return pLine;
    }

    CLine * GetLine(int nIndex) //(Zeile 42)
    {
    //Zeiger auf Linienobject für die angegeben
    //Position in Objectarray zurückgeben
    return (CLine*)m_oaLines[nIndex]; //m_osLines ist eine Variable von Typ CObArray
    }
    </PRE>

    "Line.h" habe ich überall includet.
    Kann mir jemand weiter helfen? Ich wäre dankbar für jeder Hilfe.

  • #2
    Hi Serhiy,<br>
    mein C++ ist schon etwas eingerostet, aber die Fehlermeldung klingen so, als wäre dem Compiler CLine unbekannt. Vielleicht hilft's, wenn du #include "Line.h" rausschmeißt und stattdessen ein<pre>
    class CLine;
    </pre>einfügst. Das nennt sich Vorwärtsdeklaration: Du sagst dem Compiler "Es gibt eine Klasse CLine", definierst sie aber dann woanders (in Line.h).
    <br>
    HTH, Uli

    Comment

    Working...
    X