Warum geht das nicht?
-
Hi,
ich habe folgenden Code:
class color { public: color () : value (0xFFFFFFFF) {} color (const color& obj) : value (obj.value) {} ~color () {} // warum geht das hier nicht? static const color black = color (0xFF000000); unsigned int value; };Warum geht das nicht mit "black"? Da bekomm ich einen Fehler, dass sowas nicht mögich ist.
Hab gelesen das sowas nur auserhalb von Klassen geht, aber gibt es eine Lösung das in der Klasse zu machen?
Viele Grüße
Moro
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html
ansonsten: schau mal welchen Konstruktor du aufrufst rechts vom Gleichheitszeichen. Die Fehlermeldung die du ja leider nicht mitgeliefert hast dürfte in etwa heißen "Es gibt keinen Ctor der ein int nimmt, nur default-Ctor und copy-Ctor"
-
Ich arbeite mich gerade erst wieder in C++ ein und bin noch nicht beim Thema Klassen angekommen, aber rein von der logik her geht es nicht, weil du eine Klasse ja nur verwenden kannst, wenn sie vollständig definiert ist. Da du aber innerhalb deiner Klasse schon ein Objekt von ihr selbst anlegen willst, wird dir der Kompiler meist etwas um die Ohren hauen in der Form, dass die Klasse nicht fertig definiert ist.
-
Berufspenner schrieb:
Ich arbeite mich gerade erst wieder in C++ ein und bin noch nicht beim Thema Klassen angekommen, aber rein von der logik her geht es nicht, weil du eine Klasse ja nur verwenden kannst, wenn sie vollständig definiert ist. Da du aber innerhalb deiner Klasse schon ein Objekt von ihr selbst anlegen willst, wird dir der Kompiler meist etwas um die Ohren hauen in der Form, dass die Klasse nicht fertig definiert ist.
Weitereinarbeiten und im geposteten Code die Impl. suchen.. denn die sind dort.
(Ausser dem von Pumuckel erwähnten Ctor, der ist aber auch nicht dekl.)....