需求
cpp 发现直接使用 const char str[] ="test";
作为成员变量,编译会报错:
error: array bound cannot be deduced from an in-class initializer.
解决
这个报错的原因是,作为成员变量,可能会被构造函数中的 类内初始化列表重新初始化。比如: Foo() : str({'a','b', 'c', 'd'}) {} // str ="abcd0"
.
所以,如果这个成员变量本身是不变的情况,可以使用 constexpr
这个关键字, static constexpr char str[] ="test";
这样,变成类变量。