Maison > développement back-end > C++ > Comment puis-je transmettre des littéraux de chaîne comme arguments de modèle en C ?

Comment puis-je transmettre des littéraux de chaîne comme arguments de modèle en C ?

Susan Sarandon
Libérer: 2024-11-29 12:20:10
original
222 Les gens l'ont consulté

How Can I Pass String Literals as Template Arguments in 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();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal