Maison >développement back-end >C++ >Comment puis-je transmettre des littéraux de chaîne comme arguments de modèle en C ?
Passer une chaîne comme argument de modèle
En C , lors de la définition d'un modèle de classe, des paramètres non-type peuvent également être spécifiés. Un cas d'utilisation courant consiste à transmettre des littéraux de chaîne en tant que tels paramètres. Voici comment cela peut être réalisé :
Bien qu'il ne soit pas possible de transmettre directement une chaîne littérale comme argument de modèle non-type, vous pouvez utiliser un paramètre const char* et transmettre une variable const char[] avec une liaison statique .
#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(); }
Ici, le modèle Cts a un paramètre non-type str de type const char*. Nous définissons une variable statique testStr de type const char[] et la passons comme argument à Cts
Cette approche imite efficacement le comportement de transmission de littéraux de chaîne comme arguments de modèle et vous permet de créer des modèles de classe. qui fonctionnent sur des valeurs de chaîne spécifiques.
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!