Maison > Article > développement back-end > Les littéraux de chaîne peuvent-ils être utilisés comme paramètres de modèle non-type en C ?
Modèles de classe avec des littéraux de chaîne non-type
En C, vous pouvez rencontrer le besoin de déclarer des modèles de classe avec des paramètres non-type, tels que les chaînes littérales. Cette requête explore la faisabilité de cette approche et fournit une solution.
Justification des paramètres de modèle non-type
Vous souhaiterez peut-être utiliser des littéraux de chaîne directement comme modèle non-type paramètres pour des raisons de commodité ou de lisibilité. Cependant, cela n'est pas directement pris en charge en C.
Une solution de contournement réalisable
Bien que passer directement une chaîne littérale ne soit pas possible, une solution de contournement implique l'utilisation d'un const char* non -type paramètre de modèle et en lui passant une variable const char[] avec liaison statique. Cette méthode équivaut presque à transmettre une chaîne littérale.
Exemple d'implémentation
Le code suivant illustre cette solution de contournement :
#include <iostream> template<const char *str> struct cts { void p() {std::cout << str;} }; static const char teststr[] = "Hello world!"; int main() { cts<teststr> o; o.p(); }
Explication
Conclusion
Cette solution de contournement vous permet d'utiliser efficacement des littéraux de chaîne dans les modèles de classe en tant que paramètres non-type. Il fournit une solution alternative lorsque la saisie directe d'une chaîne littérale n'est pas réalisable.
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!