首頁  >  文章  >  後端開發  >  字串文字可以用作 C 中的非類型模板參數嗎?

字串文字可以用作 C 中的非類型模板參數嗎?

Linda Hamilton
Linda Hamilton原創
2024-11-17 06:03:03212瀏覽

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

具有非類型字串文字的類別模板

在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();
}

說明

  • 類別模板cts是使用const char* 非類型模板參數str 定義。
  • 名為 teststr 的靜態連結 const char[] 變數使用字串文字「Hello world!」宣告和初始化。
  • In main 函數中,使用 teststr 作為模板參數建立 cts 實例。
  • cts 物件的p() 成員函數列印儲存的字串in str.

結論

此解決方法允許您在類別模板中有效地使用字串文字作為非類型參數。當直接字串文字輸入不可行時,它提供了替代解決方案。

以上是字串文字可以用作 C 中的非類型模板參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn