Zum Inhalt springen

Pointer _ komme nicht weiter


Empfohlene Beiträge

Geschrieben

Guten Abend,

wie ihr vielleicht wisst habe ich mich in den letzten Wochen etwas zurückgezogen um C++ zu lernen.

Ich habe mir das C++ in 21 Tagen Buch besorgt und bin momentan beim Tag 10.

Ich habe ein SDI Dokument erstellt und nach den Angaben in dem Buch bearbeitet.

in der Klasse CLine habe ich folgendes:

// Implementierung

public:

//hier bin ich

CLine* GetLine(int nIndex);

int GetLineCount();

CLine* AddLine(CPoint ptFrom, CPoint ptTo);

CObArray m_oaLines;

virtual ~CTag10Doc();

//und schüss

leider kommt bei der Ausführung immer dieser Fehler:

error C2143: Syntaxfehler : Fehlendes ';' vor '*'

error C2501: 'CLine' : Fehlende Speicherklasse oder Typbezeichner

error C2501: 'GetLine' : Fehlende Speicherklasse oder Typbezeichner

komm ich irgendwie auch nicht weiter... kann es sein das ich die Implementierung an der Falschen stelle gemacht, oder sowas?

Danke

Christoph

Geschrieben
Originally posted by Naberius

sehe ich das richtig das du in der Klasse CLine versuchst eine CLine Membervariable zu erzeugen? Das geht natürlich nicht.

Wieso geht das nicht? Ich vermute, dass das abschliessende Semikolon nach der Klassendefinition fehlt:


  class CLine {

    public:

    <...usw...>

}; <--- ist dieses Semikolon gesetzt????

Nic

Geschrieben
Originally posted by Naberius

sehe ich das richtig das du in der Klasse CLine versuchst eine CLine Membervariable zu erzeugen? Das geht natürlich nicht.

Man kann das schon machen. Sonst würden ja verkette Listen mit Zeigen nicht funktionieren.

Des weiteren sehe ich leider keine Deklaration einer Variable vom Typ CLine.

Frank

Geschrieben
Originally posted by fmarx2000

Des weiteren sehe ich leider keine Deklaration einer Variable vom Typ CLine.

Ich hatte das so verstanden, dass die Klasse "CLine" heisst. Verkettete Listen wuerden auch ohne das Feature funktionieren.

Nic

Geschrieben
Originally posted by nic_power

Ich hatte das so verstanden, dass die Klasse "CLine" heisst. Verkettete Listen wuerden auch ohne das Feature funktionieren.

Nic

Ja, ich könnte einen Schweine - Void - Zeiger haben das dann das ganz wirklich ekelhaft macht.

Frank

Geschrieben
Originally posted by fmarx2000

Ja, ich könnte einen Schweine - Void - Zeiger haben das dann das ganz wirklich ekelhaft macht.

Nö, das hat nichts mit einem void* zu tun:


struct list{

  int element;

  struct list* next;

  struct list *prev;

};

Die Frage die angesprochen wurde betraf das Verwenden eines Klassenmembers, der den gleichen Namen traegt wie die Klasse selbst (in C ist das vergleichbar mit dem Verwenden eines Variablennamens, der den selben Namen traegt wie die Funktion in der er verwendet wird).

class CLine {

  public:

    int CLine;

};


bzw:


int listElem()

{

  int listElem;


}

Das Scoping in C/C++ klaert diese Frage eindeutig. Beide Faelle sind zulaessig. Gerade bei C++ wird von diesen Features heftigst Gebrauch gemacht, da der Konstruktur den gleichen Namen traegt wie die Klasse selbst und Memberfunctions mit identischen Namen und unterschiedlichen Argumenten verwendet werden.

Nic

Geschrieben

zur sicherheit noch mal der ganze Quelltext....


class CTag10Doc : public CDocument
{
protected: // Nur aus Serialisierung erzeugen
CTag10Doc();
DECLARE_DYNCREATE(CTag10Doc)

// Attribute
public:


// Operationen
public:



// Überladungen
// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
//{{AFX_VIRTUAL(CTag10Doc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL

// Implementierung
public:
//hier bin ich

CLine* GetLine(int nIndex);
int GetLineCount();
CLine* AddLine(CPoint ptFrom, CPoint ptTo);
CObArray m_oaLines;
virtual ~CTag10Doc();
//und schüss



#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generierte Message-Map-Funktionen
protected:
//{{AFX_MSG(CTag10Doc)
// 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()
};
[/PHP]

konnte leider mit den bisherigen Postings nicht viel anfangen, vielleicht hilft das hier weiter zu helfen ;)

Christoph

Geschrieben

hier CLine



// Line.h: Schnittstelle für die Klasse CLine.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LINE_H__A70DA8C9_2D09_4DA5_B438_987A59F159DD__INCLUDED_)
#define AFX_LINE_H__A70DA8C9_2D09_4DA5_B438_987A59F159DD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CLine : public CObject
{
public:
CLine(CPoint ptFrom, CPoint ptTo);
CLine();
virtual ~CLine();

private:
CPoint m_ptTo;
CPoint m_ptFrom;
};

#endif // !defined(AFX_LINE_H__A70DA8C9_2D09_4DA5_B438_987A59F159DD__INCLUDED_)


[/PHP]

Geschrieben

aahhjjjaa. Das hat auf jeden Fall was gebracht. Jetzt kommen nur noch 2 Fehler, vielleicht fallt dir auch dazu noch was ein?



/////////////////////////////////////////////////////////////////////////////
// CTag10View Zeichnen

void CTag10View::OnDraw(CDC* pDC)
{
CTag10Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen
// Anzahl der Linien im Dokument ermitteln
int liCount = pDoc->GetLineCount();

// Gibt es Linien im Dokument?
if (liCount)
{
int liPos;
CLine *lptLine;

// Schleife durch die Linien des Dokuments
for (liPos = 0; liPos < liCount; liPos++)
{
// Anfangs- und Endpunkte für alle Zeilen holen
lptLine = pDoc->GetLine(liPos);
// Linie zeichnen
lptLine->Draw(pDC); //hier zeigt der Fehler Pfeil hin
}
}

}

[/PHP]

FEHLERMELDUNG:

error C2039: 'Draw' : Ist kein Element von 'CLine'

Siehe Deklaration von 'CLine'

error C2039: 'Draw' : Ist kein Element von 'CLine'

Siehe Deklaration von 'CLine'

Muss ich in der CTag10View die KLasse CLine Implementiere? Ist bis jetzt nicht so.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...