Heim >Backend-Entwicklung >C++ >Warum erhalte ich für statische Objekte den Fehler „Unaufgelöstes externes Symbol' (LNK2001)?
Behebung eines ungelösten externen Symbolfehlers (LNK2001) für statische Objekte
Bei einem Versuch, einem statischen Feld in einer Klasse einen Wert zuzuweisen Bei der Hauptmethode ist ein unerklärlicher Fehler aufgetreten: „Unaufgelöstes externes Symbol“. Dieser Fehler weist darauf hin, dass der Linker während des Verknüpfungsprozesses keine Definition für die statische Mitgliedsvariable finden konnte.
Gemäß der C-Referenz ist eine Deklaration eines statischen Datenmitglieds innerhalb einer Klassendefinition keine Definition. Das bedeutet, dass Sie die statische Mitgliedsvariable nicht innerhalb der Klasse selbst definieren können. Um den Fehler zu beheben, müssen Sie das statische Mitglied außerhalb der Klasse in einem Namespace-Bereich definieren.
In Ihrem Fall sollten Sie die statische Mitgliedsvariable B::a außerhalb von B-Klasse wie folgt:
<code class="cpp">A* B::a;</code>Dadurch wird sichergestellt, dass der Linker die Definition der statischen Mitgliedsvariablen erfolgreich finden kann. Durch Befolgen der One Definition Rule (ODR), die sicherstellt, dass es für jede Entität im Programm nur eine Definition gibt, kann der Compiler das externe Symbol auflösen und den Code erfolgreich verknüpfen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich für statische Objekte den Fehler „Unaufgelöstes externes Symbol' (LNK2001)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!