Heim > Backend-Entwicklung > C++ > Warum führt das Festlegen eines statischen Felds über die Hauptmethode zu einem Fehler „Unaufgelöstes externes Symbol'?

Warum führt das Festlegen eines statischen Felds über die Hauptmethode zu einem Fehler „Unaufgelöstes externes Symbol'?

Linda Hamilton
Freigeben: 2024-10-31 06:33:02
Original
874 Leute haben es durchsucht

Why Does Setting a Static Field from the Main Method Cause an

Ungelöster externer Symbolfehler: Statisches Feld über Hauptmethode festlegen

Beim Versuch, ein statisches Feld in einer Klasse über die Hauptmethode zu aktualisieren, Entwickler können auf den Fehler „LNK2001: unaufgelöstes externes Symbol“ stoßen. Dieser Fehler tritt aufgrund einer bestimmten Regel auf, die für eine ordnungsgemäße Verknüpfung erfordert, dass statische Klassenmitglieder außerhalb der Klassendefinition definiert werden.

Beachten Sie den folgenden Code:

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

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

int main()
{
    B::a = new A; // Attempting to set the static field
}</code>
Nach dem Login kopieren

In diesem Code versuchen wir es um das statische Feld a der Klasse B auf ein neues A-Objekt aus der Hauptmethode zu setzen. Der Compiler gibt jedoch den Fehler „LNK2001“ aus, da die Definition von a fehlt.

Gemäß dem C-Standard gelten Deklarationen statischer Datenelemente innerhalb von Klassendefinitionen nicht als Definitionen. Stattdessen müssen die Definitionen außerhalb der Klasse in einem Namespace-Bereich unter Verwendung des Klassennamens und des ::-Operators bereitgestellt werden. Hier ist der korrigierte Code:

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

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

// Definition of static field outside the class
A* B::a;

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

Durch die Definition außerhalb der Klasse kann der Compiler das Symbol richtig verknüpfen und ermöglichen, dass das statische Feld von der Hauptmethode geändert wird.

Das obige ist der detaillierte Inhalt vonWarum führt das Festlegen eines statischen Felds über die Hauptmethode zu einem Fehler „Unaufgelöstes externes Symbol'?. 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