Maison >développement back-end >C++ >Pouvez-vous transmettre des littéraux de chaîne en tant qu'arguments de modèle non-type ?
Passer des littéraux de chaîne en tant qu'arguments de modèle non-type
Énoncé du problème :
Pouvez-vous définir un modèle de classe avec un paramètre de modèle non-type qui accepte une chaîne littérale, telle que my_class<"string">?
Solution :
Bien que ce ne soit pas le cas Il est possible de transmettre directement une chaîne littérale en tant que paramètre de modèle non-type, vous pouvez obtenir un effet similaire en déclarant un paramètre const char* et en lui passant une variable const char[] avec une liaison statique.
Exemple de code :
#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 :
Dans ce code, le paramètre de modèle str est un const char*, qui peut pointer vers une chaîne littérale ou une variable chaîne. La variable teststr est déclarée comme un const char[] statique avec la chaîne littérale "Hello world!". En passant teststr comme argument de modèle, vous pouvez accéder efficacement au littéral de chaîne dans le modèle de classe.
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!