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!