以下代码片段为什么可以无错误编译通过:
void func(){
const int s_max{ 10 };
int m_array[s_max]{0};
}
int main() {
const int s_max{ 10 };
int m_array[s_max]{0};
return 0;
}
但是当我尝试在类作用域内定义相同的数组时,会出现以下错误:
class MyClass
{
const int s_max{ 10 };
int m_array[s_max]{0}; // error: invalid use of non-static data member 's_max'
};
s_max
为什么需要在类中声明为static
?
我在其他类似的帖子中没有找到令人信服的答案。
const
虽然必要但不足以构成常量表达式。 - Henri Menkes_max
是一个常量表达式. 具有整数或枚举类型,并引用已使用常量表达式初始化的完整非易失性const对象 - songyuanyao