【发布时间】:2017-03-29 05:52:21
【问题描述】:
谁能解释不允许位字段作为类的静态成员的原因?例如,一个类定义如下:
class A{
public:
A() {}
~A(){}
private:
static int mem :10;
};
int A::mem;
无法编译。
用不同的编译器编译这个类:-
1- g++ 抛出错误:-
错误:静态成员 'mem' 不能是位域
static int mem :10;
错误:‘int A::mem’不是‘class A’的静态数据成员
int A::mem;
2- clang 抛出错误:-
错误:静态成员 'mem' 不能是位域
static int mem :10;
3-Visual Studio 15 抛出错误:-
'A::mem'::非法存储类
'int A::mem':不允许成员函数重声明
【问题讨论】:
-
会产生哪个编译错误?
标签: c++ bit-fields