静的 constexpr Char 配列への未定義参照: 未定義参照の問題を理解する
C プログラミング言語では、静的定数を定義できます。クラス内の文字配列。ただし、開発者がコード内でそのような配列を参照しようとすると、「未定義の参照」エラーが発生する可能性があります。このエラーは、コンパイラが静的メンバーの宣言と定義の両方を必要とするために発生します。
この問題を解決するには、コードを次のように変更する必要があります。クラス定義 (.hpp ファイル) では、静的配列の宣言と初期化はクラス内に残す必要があります。実装ファイル (.cpp ファイル) では、静的配列の定義を提供する別の行を追加する必要があります。
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; }; // .cpp void foo::bar() { std::string str(baz); // now compiles successfully } constexpr char foo::baz[]; // definition of static member
静的メンバーの定義を個別に提供することで、コンパイラは参照をリンクできます。配列に正しくコピーされ、未定義の参照エラーが解決されました。この宣言と定義の分離が必要なのは、配列のサイズはコンパイル中に知る必要がある一方で、初期化は後まで延期できるためです。
以上がC の静的 constexpr Char 配列で「未定義の参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。