Maison > développement back-end > C++ > Pourquoi l'accès à un membre entier const statique entraîne-t-il une erreur de référence non définie en C ?

Pourquoi l'accès à un membre entier const statique entraîne-t-il une erreur de référence non définie en C ?

Susan Sarandon
Libérer: 2024-11-30 21:03:21
original
762 Les gens l'ont consulté

Why Does Accessing a Static Const Integer Member Result in an Undefined Reference Error in C  ?

Membres entiers const statiques et erreur de référence non définie

Le langage C permet la définition de membres const statiques dans une définition de classe pour les types entiers . Cependant, une tentative récente a rencontré une erreur de l'éditeur de liens. Plus précisément, une classe nommée "test" a déclaré un membre entier const statique "N" avec une valeur de 10. Lorsque vous tentez d'accéder et d'utiliser "N" dans une fonction ultérieure, le code échoue avec une erreur de référence non définie.

Initialisation de constante de type entier

Bien que la déclaration de classe permette de définir une valeur initiale pour "N", il convient de le noter qu'il ne s'agit que d'un initialiseur, pas d'une définition complète. Selon la norme C, les membres intégraux const statiques nécessitent une définition en dehors de la déclaration de classe.

Impact des paramètres de référence

Le coupable dans ce cas est l'appel au Fonction "std::min". Comme "std::min" prend ses paramètres par référence constante, il nécessite que "N" soit entièrement défini. L'absence d'une définition distincte pour « N » conduit à l'erreur de référence non définie.

Éviter l'erreur

Pour résoudre le problème, une définition de « N » doit être fourni en dehors de la déclaration de classe. Ceci peut être réalisé en déclarant et en initialisant "N" dans un espace de noms ou un fichier d'en-tête distinct. De plus, il peut être avantageux d'utiliser le mot-clé "constexpr" pour garantir que "N" est évalué au moment de la compilation.

Conclusion

L'erreur de l'éditeur de liens rencontrée dans cette instance provient de la définition incomplète du membre entier const statique "N". En comprenant la distinction entre initialisation et définition et en répondant aux besoins des paramètres de référence, ce problème peut être efficacement résolu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal