Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des erreurs « Référence non définie » lorsque je transmets des références constantes statiques à des fonctions ?
Références non définies avec des références de constantes statiques
Lors de l'implémentation d'une fonction avec une référence à une constante statique, telle que const int & a, le compilateur peut rencontrer une erreur « Référence non définie ». Cette erreur vient du fait que, bien que la constante soit déclarée comme statique, elle n'est pas définie dans le contexte où la fonction est appelée.
Selon le standard C (9.4.2/4), une constante Les données membres d'un type intégral const peuvent être initialisées avec un initialiseur constant dans sa déclaration. Cependant, lorsqu'il est utilisé dans un paramètre de fonction, le transmettre par référence constante constitue une « utilisation » (conformément à 3.2/2) et déclenche l'exigence de sa définition dans la portée de l'espace de noms.
Dans l'exemple fourni, le la constante statique kConst est utilisée dans la fonction foo via la ligne foo(kConst). Comme la constante n'est définie nulle part, le compilateur tente de créer une référence à un objet non défini. Pour résoudre ce problème, le développeur doit soit fournir une définition pour kConst, soit transmettre la constante par valeur (forçant la création d'un objet temporaire), comme démontré dans la solution proposée dans l'exemple.
Bien que GCC puisse permettre de transmettre la constante par valeur (via static_cast
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!