Heim > Backend-Entwicklung > C++ > Hauptteil

Wie behebe ich den Fehler „Ungelöstes externes Symbol' beim Zuweisen zu einem statischen Objektfeld?

Patricia Arquette
Freigeben: 2024-10-31 16:03:18
Original
716 Leute haben es durchsucht

How Do I Resolve the

Verstehen des Fehlers „Unaufgelöstes externes Symbol“ für die Feldzuweisung eines statischen Objekts

Beim Schreiben von Code kann es vorkommen, dass Sie ein zuweisen müssen Wert in ein statisches Objektfeld einer anderen Klasse einfügen. Der Versuch einer solchen Zuweisung kann jedoch zu einem Verknüpfungsfehler mit der Meldung „unaufgelöstes externes Symbol“ führen.

Betrachten Sie ein vereinfachtes Codebeispiel:

<code class="cpp">class A
{
public:
    A() {}
};

class B
{
public:
    static A* a;
};

int main()
{
    B::a = new A;
}</code>
Nach dem Login kopieren

Der Versuch, diesen Code zu kompilieren, führt zu der Fehler:

error LNK2001: unresolved external symbol "public:
static class A * B::a" (?a@B@@2PAVA@@A)
Nach dem Login kopieren

Dieser Fehler tritt auf, weil statische Objektfelder nicht implizit in ihren Klassendeklarationen definiert sind. Gemäß dem C-Referenzstandard ist „die Deklaration eines statischen Datenelements innerhalb einer Klassendefinition keine Definition und kann von einem unvollständigen Typ sein.“

Regel für die Definition statischer Objektfelder

Um diesen Fehler zu beheben, müssen Sie das statische Objektfeld explizit außerhalb der Klassendefinition definieren. Diese Regel gilt für alle statischen Objektfelder, unabhängig von ihrer Zugänglichkeit oder Veränderbarkeit.

Beispieldefinition:

<code class="cpp">A* B::a = nullptr;</code>
Nach dem Login kopieren

Das Platzieren der Definition im umschließenden Namespace-Bereich stellt dies sicher Der Linker kann das Symbol finden, wenn er versucht, die Zuweisung in main() aufzulösen.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Ungelöstes externes Symbol' beim Zuweisen zu einem statischen Objektfeld?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!