Keinen Zugriff auf Static Variable
-
Hallo !
Ich möchte in meiner class TComPort2 prüfen, welche Ports belegt sind. Da natürlich mehrer Instanzen angelegt werden, dachte ich daran eine static Feld anzulegen, indem der Belegungsstatus jeweils aktualisiert wird.class PACKAGE TComPort2 : public TInterface { static bool UsedComPorts[MaxComPorts]; private: public: }An anderer Programmstelle möchte ich das Feld abfragen :
// Wird der Port vom Programm benötigt ? if (TComPort2::UsedComPorts[p]) CheckListBoxComPorts->Items->AddObject(" Com" + AnsiString(p+1) + ": In use", NULL); else CheckListBoxComPorts->Items->AddObject(" Com" + AnsiString(p+1) + ": Not used", NULL);Das ärgert den BCB2006 C++ Compiler derart, dass er mir mir die Fehlermeldung:
E2247 Zugriff auf "TComPort2::UsedComPorts" nicht möglich
generiert.
Ich habe diese Vorgehensweise genau so in der Hilfe gefunden.
Was aber ist falsch daran ? Oder gibt es noch einen anderen Weg dies zu erreichen ?Vielen Dank
-
Hallo
class PACKAGE TComPort2 : public TInterface { private: public: static bool UsedComPorts[MaxComPorts]; // Muß public sein }; // Semikolon nicht vergessenbis bald
akari
-
Das klappt leider auch nicht, hatte ich vorher schon probiert.
Jetzt wird einwandfrei übersetzt, aber der Linker meckert :
Error: Ungelöste externe 'TComPort2::UsedComPorts' referenziert von ...
-
Hallo
Das was ich verbessert habe, ist ja auch nur die Deklaration der statischen Variable. Du must so oder so die (da sie statisch ist) noch implementieren.
// Headerdatei class PACKAGE TComPort2 : public TInterface { private: public: static bool UsedComPorts[MaxComPorts]; // Muß public sein }; // Semikolon nicht vergessen // Implementationsdatei ... bool TComPort2::UsedComPorts[MaxComPorts]; // Hier Implementation notwendig, nur hier Initialisierung möglichbis bald
akari
-
Ja, wenn man es richtig macht, funktioniert auch alles

Vielen Dank