> 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