Maison > Article > développement back-end > Comment obtenir une conversion de type implicite élégante avec les fonctions Template Friend ?
Conversion de type implicite élégante avec fonctions d'ami de modèle
Lorsqu'il s'agit de classes de modèles, activer la conversion de type implicite peut être difficile. Considérez le modèle de classe A avec un constructeur qui prend un int et une surcharge d'opérateur pour l'ajout :
Normalement, appeler le constructeur avec un int nécessite un casting explicite. Cependant, l'exemple suivant génère des erreurs de compilation :
Le problème de la correspondance exacte des types
Le problème réside dans le fonctionnement de la résolution de surcharge pour les fonctions de modèle. Lors de la déduction de type, le compilateur recherche des correspondances exactes pour les paramètres du modèle. Dans notre cas, il ne parvient pas à faire correspondre l'argument int au constructeur car les types ne s'alignent pas exactement.
La solution : fonctions d'amis non membres
Une solution élégante La solution consiste à définir une fonction ami non membre dans la définition de la classe :
Pour chaque instanciation de modèle, le compilateur génère une fonction non-modèle distincte au niveau de l'espace de noms avec la signature appropriée :
Avantages des fonctions d'amis non membres
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!