Heim > Backend-Entwicklung > C++ > Können String-Literale als Nicht-Typ-Vorlagenparameter in C verwendet werden?

Können String-Literale als Nicht-Typ-Vorlagenparameter in C verwendet werden?

Linda Hamilton
Freigeben: 2024-11-17 06:03:03
Original
272 Leute haben es durchsucht

Can String Literals Be Used as Non-Type Template Parameters in C  ?

Klassenvorlagen mit Nicht-Typ-String-Literalen

In C müssen Sie möglicherweise Klassenvorlagen mit Nicht-Typ-Parametern deklarieren. wie zum Beispiel String-Literale. Diese Abfrage untersucht die Machbarkeit dieses Ansatzes und bietet eine Lösung.

Begründung für nicht-typbasierte Vorlagenparameter

Vielleicht möchten Sie Zeichenfolgenliterale direkt als nicht-typbasierte Vorlagen verwenden Parameter aus Gründen der Bequemlichkeit oder Lesbarkeit. Dies wird jedoch in C nicht direkt unterstützt.

Eine praktikable Problemumgehung

Während die direkte Übergabe eines String-Literals nicht möglich ist, besteht eine Problemumgehung in der Verwendung eines const char* non -type-Vorlagenparameter und übergeben Sie ihm eine const char[]-Variable mit statischer Verknüpfung. Diese Methode entspricht nahezu der Übergabe eines String-Literals.

Beispielimplementierung

Der folgende Code veranschaulicht diese Problemumgehung:

#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();
}
Nach dem Login kopieren

Erläuterung

  • Die Klassenvorlage cts wird mit einem const char* nicht typisierten Vorlagenparameter str definiert.
  • Eine statisch verknüpfte const char[]-Variable mit dem Namen teststr wird deklariert und initialisiert mit dem String-Literal „Hello world!“.
  • In der Hauptfunktion wird eine Instanz von cts mit teststr als Vorlagenargument erstellt.
  • Die p()-Mitgliedsfunktion der cts Das Objekt gibt die in str gespeicherte Zeichenfolge aus.

Fazit

Mit dieser Problemumgehung können Sie Zeichenfolgenliterale in Klassenvorlagen effektiv als Nichttypparameter verwenden. Es bietet eine alternative Lösung, wenn die direkte Eingabe von String-Literalen nicht möglich ist.

Das obige ist der detaillierte Inhalt vonKönnen String-Literale als Nicht-Typ-Vorlagenparameter in C verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage