首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

c++静态成员属性的简单有关问题

2013-02-24 
c++静态成员属性的简单问题。class base{public:static int const a1}int main(){int abase::a//为什

c++静态成员属性的简单问题。
class base

{
      public:
            static int const a=1;
};
int main()
{
    int a=base::a;//为什么这句是对的?
    int const *p=&base::a;//但这句是错的。
}

编译器报错是(Dev-C++)
  [Linker error] undefined reference to `base::a' 


我知道怎么样那句错的可以改正对,但就是想不通为什么这样不对。希望高人可以告诉我为什么。感激不尽! c++ class static
[解决办法]
你啥编译器,VC2012U1下没错误
[解决办法]
手头没有GCC,应该是编译器错误地把base::a优化掉了。
[解决办法]
这得看标准了, 记得primer上说过static const是可以直接在类声明里直接声明而不必在外部定义的,但估计这种形式会导致编译器找不到定义从而取不到地址。

还是这样吧:

#include <iostream>

class Base {
public:
    static const int n;        
};

const int Base::n = 2;

int main( int argc, char* const argv[] ) 
{
    int n = Base::n;
    const int *p = &Base::n;
    return 0;
}

热点排行