对 Static constexpr char[]的未定义引用
当尝试创建静态 const char 数组作为类的成员时,您可以遇到错误“未定义的引用baz."
说明:
GCC 要求您对静态 const 数组使用 constexpr。但是,仅将数组声明和初始值设定项放在类定义中是不够的。您还必须在 .cpp 文件中提供单独的成员定义。
要解决此问题:
在您的 .cpp 文件中,添加类声明后的以下行:
constexpr char foo::baz[];
这声明了静态成员的定义baz.
将数组的声明和初始化留在类定义中:
// .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; };
原因:
类定义提供静态成员的声明和初始化器。但是,分配内存和初始化数组的成员定义需要在 .cpp 文件中单独提供。通过添加此定义,链接器将能够找到符号 baz 并解析未定义的引用。
以上是为什么我的静态 `constexpr char` 数组会导致'未定义的引用”?的详细内容。更多信息请关注PHP中文网其他相关文章!