智能感知:类型 "const char *const []" 的成员不能具有类内初始值设定项
IntelliSense: a member of type "const char *const []" cannot have an in-class initializer
考虑:
class Note
{
public:
// ...
private:
static const char* const NOTE_NAMES[12] =
{ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
}
虽然它编译得很好,但IntelliSense给了我一个错误:
IntelliSense:类型为"const-char*const[12]"的成员不能具有类内初始值设定项
这是bug还是我做错了什么?
根据C++标准
如果非易失性常量静态数据成员是整数或枚举类型,其在类定义中的声明可以指定大括号或相等的初始值设定项,其中赋值表达式是一个常量表达式
因此,您的代码不满足C++标准。
另一方面
可以在类中声明literal类型的静态数据成员带有constexpr说明符的定义;如果是,其声明应指定一个大括号或相等的初始值设定项,其中的每个初始值设定值子句这是一个赋值表达式,是一个常量表达式
所以为了获得有效的代码,你应该写
static constexpr char* const NOTE_NAMES[12] =
{ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
相关文章:
- 不允许运算符 const 参数调用 const 成员函数
- c++ 是否保证标头初始化的静态 const 成员跨编译单元和库共享单个实例?
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 如何避免将 const 和非 const 成员函数输入到模板中的代码重复
- 初始化 const 成员的正确方法
- 使用 Boost 对具有 const 成员的类进行序列化
- 非常量调用 const 成员函数失败,只读位置C++
- PIMPL类的设置应该是const成员函数
- 与其他静态const成员初始化静态常量成员
- decltype 不会推断 const 对象的 const 成员
- 如何初始化不是静态的const成员
- 如何使用常量变量初始化类的 const 成员变量
- 使用模板参数初始化静态 const 成员
- 与const成员配对的向量
- 通过参考const成员通过参考时,尝试引用已删除的函数
- const成员初始化之前的用法是GCC和Clang的这种预期行为
- 通过const成员变量访问内联函数
- 与const成员一起安排新的和班级的分配
- 在const函数中调用非CONST成员的非const函数
- 为什么即使对于 "copy on write" 的 const 成员函数也返回一个代理类?