非型文字列リテラルを含むクラス テンプレート
C では、非型パラメーターを含むクラス テンプレートを宣言する必要が生じる場合があります。文字列リテラルなど。このクエリは、このアプローチの実現可能性を調査し、解決策を提供します。
非型テンプレート パラメータの根拠
文字列リテラルを非型テンプレートとして直接利用することもできます。利便性や読みやすさを目的としたパラメータです。ただし、これは C では直接サポートされていません。
実現可能な回避策
文字列リテラルを直接渡すことは不可能ですが、回避策として const char* non を使用する必要があります。 -type テンプレート パラメーターを使用し、静的リンケージを使用して const char[] 変数を渡します。このメソッドは、文字列リテラルを渡すこととほぼ同等です。
実装例
次のコードは、この回避策を示しています。
#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(); }
説明
結論
この回避策を使用すると、クラス テンプレート内の文字列リテラルを非型パラメーターとして効果的に使用できます。これは、文字列リテラルの直接入力が不可能な場合の代替ソリューションを提供します。
以上が文字列リテラルは C の非型テンプレート パラメーターとして使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。