Unerwarteter Fehler: „Undefinierter Verweis auf statischen constexpr char[]“ in der Klassendefinition
Es tritt ein „undefinierter Verweis auf statischen constexpr char[] auf ]“-Fehler beim Definieren eines statischen const char-Arrays innerhalb einer Klasse kann verwirrend sein. Lassen Sie uns das Problem untersuchen und die Lösung erkunden.
Wie in der Fehlermeldung hervorgehoben, erwartet der Compiler eine Definition für das statische Mitglied. Im bereitgestellten Codeausschnitt haben Sie die Deklaration und den Initialisierer in die Klassendefinition eingefügt, aber Sie haben die separate Definition nicht in der CPP-Datei bereitgestellt.
Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:
Fügen Sie in der .cpp-Datei Folgendes hinzu: die Definition durch Deklaration des statischen Elements ohne den Initialisierer, wie unten gezeigt:
constexpr char foo::baz[];
Pflege die Klassendeklaration und der Initialisierer für das statische Mitglied in der .hpp-Datei ist.
Erklärung:
In C wird statischen Mitgliedern während der Kompilierung Speicher zugewiesen und von allen Instanzen der Klasse gemeinsam genutzt. Beim Definieren eines statischen const char-Arrays müssen sowohl die Deklaration als auch der Initialisierer in der Header-Datei (.hpp) enthalten sein. Allerdings muss die Definition (ohne Initialisierer) separat in der Implementierungsdatei (.cpp) bereitgestellt werden, um das Verknüpfungsproblem zu beheben. Dadurch wird sichergestellt, dass während der Verknüpfung auf die Definition für das statische Mitglied zugegriffen werden kann, wodurch der Fehler „Undefinierte Referenz“ behoben wird.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in C den Fehler „Undefinierter Verweis auf statischen constexpr char[]'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!