Globale Arrays?
-
Wie deklariere ich Globale Arrays richtig? wenn ich zum Bleistift
BOOL* ThreadActive = new BOOL[100];in den Konstruktor schreibe. bekomm ich die Fehlermeldung Ungueltige Syntax fuer rein virtuelle Methode; '= 0' erforderlich.
Vielen Dank für die Hilfe
-
Hallo.
Ich weiß persönlich gar nicht, ob man überhaupt globale Arrays/Variablen als Zeiger anlegen kann.
Falls das geht, kann mir mal jemand sagen, wo die Dinger dann allokiert werden?
Bye.
-
kannst du noch ein bißchen drumrum-Code posten?
probier#s mal mit einem anderen namen als "ThreadActive", kann sein daß sich da ein #define dahinter versteckt.
-
Man kann globale Arrays alloziieren. Du musst allerdings die Speicheranforderung an _einer_ Stelle im Programmfluss vornehmen.
// Irgendwo: BOOL* g_bArray = 0; // z.B. in InitInstance g_bArray = new BOOL[100]; // z.B. in ExitInstance delete[] g_bArray;Is' aber extrem schlechter Stil.
-
Sicher geht das:
class blabla { // ... }; class blubb { static blabla* bla; }; blabla* blubb::bla = new blabla[100];Um Speicherlecks zu vermeiden, bietet sich aber eine Klasse an:
template<class T> class auto_array { public: auto_array(int size) : m_array(new typename T[size]) {} ~auto_array() { delete[] m_array; } operator T*() { return m_array; } private: T* m_array; auto_array (const auto_array&); auto_array& operator=(const auto_array&); }; class trallala { // ... }; class irgendwas { static auto_array<trallala> bla; }; auto_array<trallala> irgendwas::bla(100);