對 Static constexpr char[]的未定義引用
當嘗試建立靜態 const char當陣列作為類別的成員時,您可以遇到錯誤「未定義的引用baz."
說明:
GCC 要求您對靜態 const 陣列使用 constexpr。但是,僅將數組宣告和初始值設定項放在類別定義中是不夠的。您還必須在 .cpp 檔案中提供單獨的成員定義。
要解決此問題:
在您的 .cpp文件中,加入類別宣告後的以下行:
constexpr char foo::baz[];
這宣告了靜態成員的定義baz.
將陣列的宣告和初始化留在類別定義中:
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; };
原因:
類別定義提供靜態成員的宣告和初始化器。但是,分配記憶體和初始化數組的成員定義需要在 .cpp 檔案中單獨提供。透過新增此定義,連結器將能夠找到符號 baz 並解析未定義的參考。
以上是為什麼我的靜態 `constexpr char` 陣列會導致「未定義的參考」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!