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
Susan Sarandonoriginal
2024-11-29 12:20:10219parcourir

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();
}

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!

Déclaration:
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