Heim >Backend-Entwicklung >C++ >Warum erhalte ich „Undefinierte Referenzen', wenn ich statische Klassenmitglieder in C verwende?
Undefinierte Verweise auf statische Klassenmitglieder
In C müssen statische Mitglieder, die innerhalb von Klassen definiert sind, ordnungsgemäß behandelt werden, um Kompilierungsfehler zu vermeiden.
Grund für undefinierte Referenzen
Statische Mitglieder, obwohl sie darin deklariert sind Klassendefinitionen werden nicht automatisch definiert, sofern dies nicht ausdrücklich an anderer Stelle erfolgt. Dies liegt daran, dass sich Deklarationen von Definitionen in C unterscheiden. Eine Deklaration führt lediglich das Mitglied ein, während eine Definition Speicher zuweist und einen Anfangswert bereitstellt.
Beispiel
Betrachten Sie die folgende Klasse mit einem nicht deklarierten statischen Mitglied:
class Example { static bool exampleStaticMember; };
Der Versuch, exampleStaticMember zu verwenden, ohne es zu definieren, führt zu „undefinierten Referenzen“. Fehler.
Definitionsanforderungen
Um dieses Problem zu beheben, muss das statische Mitglied explizit definiert werden, normalerweise in der Quelldatei (.cpp), die die Klassendefinitionen enthält. Die Definition deklariert das Mitglied einfach erneut mit seinem Datentyp und einem Semikolon (';').
bool Example::exampleStaticMember;
Sonderfälle
Andere statische Verwendungen
Beachten Sie, dass das Schlüsselwort static unterschiedliche Bedeutungen hat, wenn es außerhalb von angewendet wird Klassen:
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „Undefinierte Referenzen', wenn ich statische Klassenmitglieder in C verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!