クラス定義で「静的 constexpr char[] への未定義の参照」が発生しました
「静的 constexpr char[] への未定義の参照が発生しました」 ]" クラス内で静的な const char 配列を定義するときに発生するエラーは、混乱を招く可能性があります。問題を詳しく調べて解決策を探ってみましょう。
エラー メッセージで強調表示されているように、コンパイラは静的メンバーの定義を期待しています。提供されたコード スニペットでは、クラス定義内に宣言と初期化子が含まれていますが、.cpp ファイル内に別の定義が指定されていません。
これを解決するには、次の手順に従います。
.cpp 内ファイルに、以下に示すように、初期化子なしで静的メンバーを宣言して定義を追加します。
constexpr char foo::baz[];
.hpp ファイル内の静的メンバーのクラス宣言と初期化子をそのまま維持しますis.
説明:
C では、静的メンバーはコンパイル中にメモリが割り当てられ、クラスのすべてのインスタンス間で共有されます。静的 const char 配列を定義する場合、宣言と初期化子の両方をヘッダー ファイル (.hpp) に含める必要があります。ただし、リンケージの問題を解決するには、定義 (初期化子なし) を実装ファイル (.cpp) で個別に提供する必要があります。これにより、リンク中に静的メンバーの定義にアクセスできるようになり、「未定義の参照」エラーが解決されます。
以上がC で「静的 constexpr char[] への未定義の参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。