int anArray[const int]
-
Hallo !
class meineKlasse { ... const int m_nArraySize; ... } // Konstruktor Version 1 // Fehlermeldung das Konstanter Wert erwartet wird void meineKlasse::meineKlasse(int unwichtig) :m_nArraySize(42) //const int muss als Initialisirungsliste zugewiesen werden { int myTempArray[m_nArraySize]; } //Diese Version funktioniert komischerweise void meineKlasse::meineKlasse(int unwichtig) { const int groesse = 42; int myTempArray[groesse]; }Die Konstante m_nArraySize wird sehr oft benutzt, deshalb als Member. Warum funktioniert es wie im Konstruktor 1 nicht ?
Compiler VC++ 6.0
Vielen Dank für Deine Antwort !
-
Ich würde behaupten weil m_nArraySize keine Compile-Time Konstante ist (kann mich aber irren). Folgendes ist erlaubt und funktioniert mit vernünftigen Compilern auch:
class X { static const int len = 12; X(void); }; X::X(void) { int a[len]; }
-
Das war der richtige Hinweis.
Wenn man es sieht, erinnert man sich wieder daran, wie es ging.
Vielen Dank gnädiger Herr !
//Im Header: class meineKlasse { private: static const int m_nSize; } //In der Cpp Datei: const int meineKlasse::m_nSize = 42; void meineKlasse::meineKlasse(int unwichtig) { int myTempArray[m_nArraySize]; }
-
Deniz schrieb:
//In der Cpp Datei: const int meineKlasse::m_nSize = 42;Konstanten kannst du übrigens auch direkt in der Headerdatei definieren ohne eine ODR Verletzung zu riskieren.