Arraygröße über Klassenkonstante festlegen
-
Hi,
bitte nicht schlagen, aber ich hab die Antwort mit der Suche und dem FAQ nicht gefunden.
Also ich hab in einer Klasse ein Array und möchte die Array-Größe für andere sichtbar machen. Also hab ich ein statische öffentlich Konstante angelegt und den Wert gleich im Header bestimmt. Beim Kompilieren meckert der Linker.
// Header class Objects { public: bool start(); bool work(); static const int OBJECT_COUNT = 100; private: Object _objects[_OBJECT_COUNT]; }; // CPP-File const int VisualStars::_OBJECT_COUNT;Das sagt der Linker:
fatal error: one or more multiply defined symbols found
Was mach ich falsch?
Grüße,
don_basto.
-
das brauchste im cpp-file nicht mehr.
-
Danke. Das war's schon.
Ich dachte ich hätte mal was gelesen, das auch die statischen Konstanten in die Cpp-Datei gehört. Ist aber schon eine Weile her.

-
Ganz einfacher Merksatz: Initialisierung bedeutet automatisch Definition. Insofern ist eine weitere Definition nicht notwendig.
-
groovemaster schrieb:
Ganz einfacher Merksatz: Initialisierung bedeutet automatisch Definition. Insofern ist eine weitere Definition nicht notwendig.
nein, nicht in diesem falle (9.4.2./4). an dem geposteten code fällt mir eigentlich nur auf, dass die klassenkonstante OBJECT_COUNT heißt, an sonsten aber _OBJECT_COUNT verwendet wird, also ein reservierter bezeichner, und die definierte konstante gehört auch zu einer anderen klasse. ob das jetzt nur ein versehen beim posten hier ist, kann ich nat. nicht beurteilen.
-
camper schrieb:
nein, nicht in diesem falle (9.4.2./4).
The member shall still be defined in a namespace scope if it is used in the program
Und was soll "if it is used in the program" bedeuten?
-
groovemaster schrieb:
Und was soll "if it is used in the program" bedeuten?
<educatedguess>Wenn jemand z.B. die Adresse dieses static const members benutzt</educatedguess>
-