Heim >Backend-Entwicklung >C++ >Warum verursacht ein statisches Const-Integer-Mitglied in C einen Linkerfehler „Undefinierte Referenz'?

Warum verursacht ein statisches Const-Integer-Mitglied in C einen Linkerfehler „Undefinierte Referenz'?

DDD
DDDOriginal
2024-12-10 20:28:11629Durchsuche

Why Does a Static Const Integer Member in C   Cause an

Undefinierter Verweis auf statisches Const-Integer-Mitglied

Trotz der falschen Annahme, dass C die Definition statischer Const-Member-Ganzzahlen innerhalb von Klassendefinitionen zulässt, wird der angegebene Code ausgelöst ein Linkerfehler aufgrund eines undefinierten Verweises auf test::N. Dieser Fehler tritt auf, wenn der Code versucht, die nicht initialisierte statische Mitgliedsvariable zu verwenden.

Es ist zwar möglich, statische konstante Ganzzahlen in der Klassendeklaration zu initialisieren, dies stellt jedoch keine Definition dar. Um das Problem zu beheben, muss das Mitglied separat im Namespace-Bereich definiert werden, jedoch ohne Initialisierer.

Da std::min in diesem Fall seine Parameter als konstante Referenz annimmt, ist eine Definition von test::N erforderlich ist erforderlich. Ohne die Definition kann der Linker den Verweis auf die Mitgliedsvariable nicht auflösen.

Das obige ist der detaillierte Inhalt vonWarum verursacht ein statisches Const-Integer-Mitglied in C einen Linkerfehler „Undefinierte Referenz'?. 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