首頁 > 後端開發 > C++ > 為什麼我的靜態 `constexpr char` 陣列會導致「未定義的參考」?

為什麼我的靜態 `constexpr char` 陣列會導致「未定義的參考」?

Patricia Arquette
發布: 2024-12-21 15:15:23
原創
535 人瀏覽過

Why Does My Static `constexpr char` Array Cause an

對 Static constexpr char[]的未定義引用

當嘗試建立靜態 const char當陣列作為類別的成員時,您可以遇到錯誤「未定義的引用baz."

說明:

GCC 要求您對靜態 const 陣列使用 constexpr。但是,僅將數組宣告和初始值設定項放在類別定義中是不夠的。您還必須在 .cpp 檔案中提供單獨的成員定義

要解決此問題:

  1. 在您的 .cpp文件中,加入類別宣告後的以下行:

    constexpr char foo::baz[];
    登入後複製

    這宣告了靜態成員的定義baz.

  2. 將陣列的宣告和初始化留在類別定義中:

    // .hpp
    struct foo {
       void bar();
       static constexpr char baz[] = "quz";
    };
    登入後複製

原因:

類別定義提供靜態成員的宣告和初始化器。但是,分配記憶體和初始化數組的成員定義需要在 .cpp 檔案中單獨提供。透過新增此定義,連結器將能夠找到符號 baz 並解析未定義的參考。

以上是為什麼我的靜態 `constexpr char` 陣列會導致「未定義的參考」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板