从非静态成员初始化静态数据成员

3
我正在尝试从非静态变量的sizeof中初始化静态成员变量:
class Myclass
{
   int a;
   static const int b = sizeof(a);
};

这应该在c++11中是合法的,对吗?但是编译器会报错C2327(“a不是类型名称,也不是静态变量或枚举”)。

编译器是Visual Studio 2015 Express。


7
sizeof (Myclass::a) 可以解决你的问题。 - Jarod42
@Jarod42 嗯,你有试过吗?rextexter 是你的好朋友。它在最新版本的VC++中可以工作,所以看起来已经修复了。 - uh oh somebody needs a pupper
1个回答

2
这显然是VC++的一个错误,因为在19.00.23506中,sizeof(Myclass::a)无法工作。这似乎已经在版本19.00.23506(尝试在线rextester)和19.00.23720.0(尝试在线Microsoft)之间得到修复。您可以尝试报告错误或下载新版本的IDE/编译器。
不过,我仍然会报告一个错误,因为不应该需要嵌套名称限定符。

你能推荐一个可以在短时间内实现的解决方法吗? - user5024425
Visual Studio Express 2015是否有超过版本14.0.50616.0的更新?由于许可证原因,我无法使用社区版。 - user5024425

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接