引用类型静态数据成员的问题可能是编译器错误

时间:2016-12-10 09:44:58

标签: c++ visual-c++ static-members compiler-bug

我认为类的静态数据成员可以是初始化为全局变量的引用类型,如下所示:

#include <iostream>
#include <stdio.h>

const unsigned int global =0x1fee;
struct K {
    int a;
    static const  int & iref;
};
const int & K::iref=global;
int main()
{
    printf("%d\n",K::iref);
    return 0;

}

但是在我的VC ++ test中,它可以编译但在执行时会产生异常。这只是VC ++的一个错误吗?我做错了吗?

1 个答案:

答案 0 :(得分:0)

你只需要机会

  

const int&amp; ķ:: IREF

  

ķ:: IREF

您需要在声明时初始化变量,而不是在其范围之外。