1. ホーム
  2. c++

[解決済み】静的な constexpr char[] への未定義の参照]

2022-04-07 13:51:02

質問

を持たせたい。 static const char を配列しています。GCCは文句を言いましたが constexpr しかし、今は未定義の参照であると言われています。配列を非メンバーにすると、コンパイルできます。どうなっているのでしょうか?

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

// .cpp
void foo::bar() {
  std::string str(baz); // undefined reference to baz
}

解決方法は?

cppファイルに追加してください。

constexpr char foo::baz[];

理由:このような場合 定義 の静的メンバの宣言と同じです。宣言とイニシャライザはクラス定義の中に入りますが、メンバの定義は別にする必要があります。