Übergabe von String-Literalen als Nichttyp-Vorlagenargumente
Problemstellung:
Können Sie? Definieren Sie eine Klassenvorlage mit einem nicht typspezifischen Vorlagenparameter, der ein Zeichenfolgenliteral akzeptiert, z. B. my_class<"string">?
Lösung:
Obwohl dies nicht der Fall ist Wenn es möglich ist, ein String-Literal direkt als nicht typspezifischen Vorlagenparameter zu übergeben, können Sie einen ähnlichen Effekt erzielen, indem Sie einen const char*-Parameter deklarieren und ihm eine const char[]-Variable mit statischer Verknüpfung übergeben.
Beispielcode:
#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(); }
Erklärung:
In diesem Code ist der Vorlagenparameter str ein const char*, der auf ein String-Literal verweisen kann oder eine String-Variable. Die Variable teststr wird als statisches const char[] mit dem String-Literal „Hello world!“ deklariert. Durch die Übergabe von teststr als Vorlagenargument können Sie innerhalb der Klassenvorlage effektiv auf das Zeichenfolgenliteral zugreifen.
Das obige ist der detaillierte Inhalt vonKönnen Sie String-Literale als Nichttyp-Vorlagenargumente übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!