Advertisement

forbids in-class initialization of non-const static member不允许类内部初始化非const静态成员

阅读量:

今天在进行C++编程时,发现了一些小错误,里面的报错为:

开发工具建议类内成员变量若为non-const static类型则需避免直接初始化;通过参考相关书籍及技术资料进一步分析发现原因在于

C++标准仅允许static constant integer或者枚举类型的数据在类内部进行初始化。

引用:C++03 9.4.2 Static data members

当一个静态数据成员属于constant integral或const enumeration类型时,在类定义中的声明可以指定一个constant-initializer(5.19),它必须是一个integral常数表达式。在这种情况下,在integral常数表达式中该成员可以参与运算。如果该成员在程序中被使用,则必须明确其所在的命名空间范围,并且命名空间范围的定义不应包含初始化程序。

什么是integral 类型?

这些基本类型(如bool、char和wchar_t)通常带有signed或unsigned修饰。其中integral类别的变量被称为整型变量(integer)。这种类型的变量在编程中常用于表示

全部评论 (0)

还没有任何评论哟~