ホームページ > バックエンド開発 > C++ > C の静的 constexpr Char 配列で「未定義の参照」エラーが発生するのはなぜですか?

C の静的 constexpr Char 配列で「未定義の参照」エラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-12-23 04:07:27
オリジナル
444 人が閲覧しました

Why Do I Get an

静的 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート