Heim >Backend-Entwicklung >C++ >Warum erhalte ich für statische Objekte den Fehler „Unaufgelöstes externes Symbol' (LNK2001)?

Warum erhalte ich für statische Objekte den Fehler „Unaufgelöstes externes Symbol' (LNK2001)?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 01:53:02962Durchsuche

Why Am I Getting an

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn