C 風格字串作為模板參數
在C 程式設計領域,您可能遇到一個困境:嘗試使用C-樣式字符串作為模板參數。本文深入探討了這個問題和潛在的解決方法。
以下程式碼片段說明了這一嘗試:
<code class="cpp">template <char *str> struct X { const char *GetString() const { return str; } }; int main() { X<"String"> x; cout << x.GetString(); }
但是,儘管類別定義中沒有編譯錯誤,但實例化會產生錯誤訊息。問題在於嘗試使用字串文字作為模板參數,而編譯器不支援該參數。
一個簡單的解決方案是將字串文字替換為字元指標:
<code class="cpp">char global_string[] = "String"; template <char const *str> struct X { const char *GetString() const { return str; } }; int main() { X<global_string> x; cout << x.GetString(); }</code>
此程式碼將成功編譯並執行,允許您使用 GetString 方法擷取儲存的字串。
請注意,隨著 C 11 的出現,現在可以使用字元將字串文字用作模板參數包。但是,對於支援早期 C 版本的編譯器,此處提供的解決方法仍然是一個可行的選擇。
以上是C 風格字串可以作為 C 中的模板參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!