如何解决对静态 constexpr char[] 的未定义引用
添加到您的 cpp 文件中:
constexpr char foo::baz[];
原因:您必须提供静态成员的 定义 以及声明。声明和初始化器位于类定义中,但成员定义必须分开。
解决方法
我想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
}