> On Sun, 2002-02-03 at 22:44, Gregor S. wrote:
> > Hi Danny,
>      ^^^
>      D>e<nny darauf bestehe ich :-)
Hi Denny!
>  
> > class employee {
> >   public:
> >     char name[64];
> >     long employee_id = 0;
> >     float salary = 0; 
> >             ...
> >  };
> als Ergebnis erhalte ich: 
> 
> c++ -DHAVE_CONFIG_H -I. -I. -I..     -O2 -O0 -g3 -Wall -fno-exceptions
> -fno-check-new  -c main.cpp
> main.cpp:28: ANSI C++ forbids initialization of member `employee_id'
> main.cpp:28: making `employee_id' static
> main.cpp:28: ANSI C++ forbids in-class initialization of non-const
> static member `employee_id'
> main.cpp:29: ANSI C++ forbids initialization of member `salary'
> main.cpp:29: making `salary' static
> main.cpp:29: ANSI C++ forbids in-class initialization of non-const
> static member `salary'
> make[3]: Leaving directory `/home/denny/cpp/test/test'
> make[3]: *** [main.o] Error 1
> 
Initialisierung von Member-Variablen (in Klassen) bei der Deklaration ist
halt verboten, da f�hrt kein Weg drumherum. Initialisiert wird im Konstruktor.

Was extra initialisiert werden muss, sind static-Variablen (die zur ganzen
Klasse geh�ren und nicht jedem Objekt einzeln, also nichts mit dem Konstruktor
zu schaffen haben). Deshalb redet der g++ da was von "making salary static",
ein gutm�tiger Versuch, trotz der Ungereimtheiten irgendwie weiterzumachen.
Eigentlich m�ssen die static-member ausserhalb der Klasse initialisiert
werden, g++ erlaubt das aber f�r Static-Konstanten auch schon in der
Klassendeklaration. (VC z.B. nicht, kann f�r Frust im Praktikum sorgen :-/ -> 
Vorsicht!)

> ich h�tte es mir auch nicht so recht vorstellen gekonnt. Ich vermute du
> hast darauf angespielt, das die Variablen mit einer xy Zahl
> initialisiert worden ist, sodass ich mit der '0' einen definierten
> Zustand habe (denke ich :-) ..) Aber er bekommt ja sp�ter wenn der
> Classe erstellt wird (worker;boss) Variablen zugewiesen. Demzufolge
> h�tte mein test prog jedesmal ein anderes Ergebnis, aber es bleibt
> konstant das selbe. :-/
->
> strcpy (boss.name, "Denny Schierz");
> worker.employee_id = 100;
> worker.salary = 50000;

Vertipper? - Du hast hier worker geschrieben aber wohl boss gemeint.
(Das war's eigentlich. :)

Ciao & More HappyCoding!
  -Bj�rn

-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net

----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an