Heim > Artikel > Backend-Entwicklung > Warum erhalte ich in C den Fehler „Undefinierter Verweis auf \'Bar::kConst\'\“?
Undefinierter Verweis auf „Bar::kConst“-Fehler in C
In C, wenn ein Programm versucht, auf eine statische const-Mitgliedsvariable zu verweisen Innerhalb einer Klasse wie Bar::kConst im angegebenen Codeausschnitt kann es zu einem Fehler „Undefinierter Verweis auf ‚Bar::kConst‘“ kommen. Dieser Fehler weist darauf hin, dass der Compiler die Definition für die Variable nicht finden kann.
Gemäß C-Standards (Abschnitt 9.4.2/4) kann ein statisches Datenelement mit einem konstanten Integral- oder Aufzählungstyp in der Klasse initialisiert werden Definition. Es muss jedoch immer noch explizit in einem Namespace-Bereich definiert werden, wenn es im Programm verwendet wird.
Im bereitgestellten Beispiel wird der statische const int kConst innerhalb der Bar-Klasse deklariert, aber nicht so definiert, wie er ist in der Deklaration initialisiert. Wenn die foo-Funktion innerhalb der Bar::func-Methode aufgerufen wird, versucht sie, kConst per Konstantenreferenz zu übergeben. Dies gilt als „Verwendung“ der Variablen gemäß C-Standard (Abschnitt 3.2/2). Da die Variable nicht explizit definiert ist, kann der Compiler die erforderliche Ersetzung nicht durchführen und löst den Fehler aus.
Um diesen Fehler zu beheben, kann man die kConst-Variable entweder explizit in einem Namespace-Bereich definieren oder, wie im Code gezeigt Snippet, konvertieren Sie kConst mithilfe eines static_cast explizit in ein temporäres int, wodurch der Compiler gezwungen wird, die Ersetzung zur Kompilierungszeit durchzuführen.
Zusammenfassend lässt sich sagen, dass der „Undefinierte Verweis auf Der Fehler „Bar::kConst“ tritt auf, weil die statische const-Mitgliedsvariable nicht explizit definiert ist, was erforderlich ist, wenn sie im Programm verwendet wird. Es ist wichtig, bei der Deklaration und Verwendung statischer Datenelemente die C-Standards einzuhalten, um solche Fehler zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in C den Fehler „Undefinierter Verweis auf \'Bar::kConst\'\“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!