Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klasse in Header definieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
15.05.2004, 09:15 Uhr
~Henrik
Gast


Okay, das Problem ist wirklich einfach.

Ich will eine Klasse im Header definieren. Weiter nichts. Ich bekomme aber immer ein "declaration syntax error". Selbst wenn ich alles soweit reduziere:

(in Test.h)


Code:
class Test
{
}



Ich benutze den Borland 5.5 Compiler. In der Uni mit gcc funktioniert es...
Sehe ich den Wald vor lauter Bäumen nicht mehr? Das kann doch nicht so schwer sein?!

Danke!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.05.2004, 09:55 Uhr
~Windalf
Gast


am ende noch ein semikolon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.05.2004, 09:55 Uhr
(un)wissender
Niveauwart


Hinter der schließenden geschweiften Klammer muss ein Semikolon.
Auch mit dem gcc wird das nicht funzen!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.05.2004, 09:56 Uhr
(un)wissender
Niveauwart


@Windalf
lol
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.05.2004, 11:01 Uhr
~Henrik
Gast


Okay, sorry Leute. Das wollte ich eigentlich noch editieren, aber ich bin ja erstmal nur Gast. Auch mit Semikolon funktioniert es nicht. Ich zeig Euch mal worum es geht. Dies ist die Header-Datei zu einer einer Klasse von Elementen einer doppelt verketteten Liste:


Code:
#include <iostream>   // cout, cin, <<, >>, endl
using namespace std;
class ListElem
{

    public:
      ListElem(){PREV = 0; NEXT = 0; Head = 0;};

      ListElem(ListElem *p,char c){PREV = p; NEXT = p->NEXT; Head = c;};

      ListElem(char c){PREV = 0; NEXT = 0; Head = c ;cout << "Listenelement  mit Inhalt: " << this->Head << " wurde erstellt" << endl;};

      ~ListElem();

     void show();

private:

        char Head;    //eigentlicher Inhalt des Listenelements
        ListElem *PREV;    //Zeiger auf das vorige Element
        ListElem *NEXT;    //Zeiger auf das nächste Element
};




Immer der gleiche Fehler "declaration syntax error" in der 3. Zeile!

???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.05.2004, 11:39 Uhr
~Windalf
Gast


parameter werden durch komma und nicht durch semikolon getrennt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.05.2004, 11:55 Uhr
~Henrik
Gast


Hmm. ??

Nur der zweite Konstruktor kriegt mehr als einen Parameter, und die sind durch ein Komma getrennt. Der Rest sind Inline - Initialisierungen innerhalb des Bodys der Funktion. Ich hätte dafür auch Elementinitialisierungslisten benutzten können, aber das ist ja wie gesagt alles gar nicht mein Problem. Ich frage mich, wieso er beim Kompilieren über die dritte Zeile, der Klassendeklaration, nicht hinaus kommt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.05.2004, 12:07 Uhr
~Windalf
Gast


Ach so sorry hast recht war blödsinn von mir...
seh ich auch gerade nicht den fehler. hab leider auch gerade kein kompiler da um das selber zu testen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
15.05.2004, 12:08 Uhr
~Windalf
Gast


doch jetzt hab ich noch was gefunden...
die Konstruktoren werden nicht mit ; abgeschlossen wenn du sie auch gleich definierst... also kein semikolon hinter den geschweiften klammern
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
15.05.2004, 12:15 Uhr
DerSchwarzeSchlumpf



Hi

bin zwar auch noch c++-anfänger aber probiern mas mal *g*

teil das ganze doch in eine .cpp und in eine .h datei auf.

In der .h-Datei schreibst du nur mal die Grundstruktur der Klasse (also welche Methoden sie hat und welche Variablen sie halten kann) und in der .cpp-Datei bestimmst du dann was die Methoden machen.


C++:
//Header-Datei list.h
//keine Includes nötig
class ListElem
{

    public:
      
      ListElem();
      ListElem(ListElem *p, char c);
      ListElem(char c);
      ~ListElem();
      void show();

      //get und set-funktionen sonst kommst du nicht an die private-elemente ran ;)

      ListElem* getNext() {return next_;}
      ListElem* getPrev() {return prev_;}
      char getHead() {return head_;}
    
      void setNext(ListElem* next) {next_ = next;}
      void setPrev(ListElem* prev) {prev_ = prev;}
      void setHead(char head) {head_ = head;}


private:

        char head_;    //eigentlicher Inhalt des Listenelements
        ListElem* prev_;    //Zeiger auf das vorige Element
        ListElem* next_;    //Zeiger auf das nächste Element
};




und in der .cpp-Datei


C++:
//.cpp-Datei list.cp

#include <iostream>
#include "list.h"

using std::cout;
using std::endl;


ListElem::ListElem() //leere Param-Übergabe
{
  prev_ = 0;
  next_  = 0;
  head_ = 0;
}

//-------

ListElem::ListElem(ListElem* p, char c)
{
  prev_ = p;
  next_ = p->getNext();
  head_ = c;
}

//------------

ListElem::ListElem(char c)
{
  prev_ = 0;
  next_ = 0;
  head_ = c;

  cout << "Listenelement mit Inhalt: " << head_ << " wurde erstellt" << endl;
}

//--------------

void ListElem::show()
{
  //code was die show-funktion machen soll
}

//------------

ListElem::~ListElem()
{
  //destruktor
}




Dieser Post wurde am 15.05.2004 um 12:17 Uhr von DerSchwarzeSchlumpf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: