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

C で「静的 constexpr char[] への未定義の参照」エラーが発生するのはなぜですか?

DDD
リリース: 2024-12-17 03:42:25
オリジナル
176 人が閲覧しました

Why Do I Get an

クラス定義で「静的 constexpr char[] への未定義の参照」が発生しました

「静的 constexpr char[] への未定義の参照が発生しました」 ]" クラス内で静的な const char 配列を定義するときに発生するエラーは、混乱を招く可能性があります。問題を詳しく調べて解決策を探ってみましょう。

エラー メッセージで強調表示されているように、コンパイラは静的メンバーの定義を期待しています。提供されたコード スニペットでは、クラス定義内に宣言と初期化子が含まれていますが、.cpp ファイル内に別の定義が指定されていません。

これを解決するには、次の手順に従います。

  1. 次の定義を指定します。

.cpp 内ファイルに、以下に示すように、初期化子なしで静的メンバーを宣言して定義を追加します。

constexpr char foo::baz[];
ログイン後にコピー
  1. 宣言と初期化子はそのままにしておきます:

.hpp ファイル内の静的メンバーのクラス宣言と初期化子をそのまま維持しますis.

説明:

C では、静的メンバーはコンパイル中にメモリが割り当てられ、クラスのすべてのインスタンス間で共有されます。静的 const char 配列を定義する場合、宣言と初期化子の両方をヘッダー ファイル (.hpp) に含める必要があります。ただし、リンケージの問題を解決するには、定義 (初期化子なし) を実装ファイル (.cpp) で個別に提供する必要があります。これにより、リンク中に静的メンバーの定義にアクセスできるようになり、「未定義の参照」エラーが解決されます。

以上がC で「静的 constexpr char[] への未定義の参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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