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(); }
Erläuterung
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!