Heim  >  Artikel  >  Backend-Entwicklung  >  Warum erhalte ich in C den Fehler „Undefinierter Verweis auf \'Bar::kConst\'\“?

Warum erhalte ich in C den Fehler „Undefinierter Verweis auf \'Bar::kConst\'\“?

DDD
DDDOriginal
2024-10-31 10:12:32925Durchsuche

Why Do I Get the

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!

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