注册 登录
编程论坛 C++教室

常数静态成员的初始化

最近不在 发布于 2010-07-12 09:06, 734 次点击
程序代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;

class A
{
    static const int num = 100;
    int elems[num];
};

const int A::num;

int main()
{
    return 0;
}
按道理说,成员的初始化应该放在类的外面。
书上这么说,如今,我们终于能够在class声明中对"整数型常数静态成员"直接赋予处之。初始化后,这个常数便可用于class中。

可我照着这句话写的例子没能通过编译。如果将num的初始化放于类的外面,则int elems[num];无法成立。(不要说用枚举,针对这个例子)。求解
5 回复
#2
lintaoyn2010-07-12 11:31
#include <iostream>
using namespace std;

class A
{
    static const int num = 100;
    int elems[num];
};

//const int A::num;去掉在一句,看不到写这句还有什么意义

int main()
{
    return 0;
}
#3
最近不在2010-07-12 11:54
这句话是为了给类中声明的静态常数据成员定义个空间。

看了c++标准库几十页,好多不明白,后面还有很多见没见过的,深受打击,暂时打算放弃了。悲剧
#4
东海一鱼2010-07-12 13:15

原因是 你的代码很标准,你用的编译器不够标准。
你可以找个vc10的编译器试下。
#5
南国利剑2010-07-12 15:43
这个我也试过,结果相似,我也认为是编译器的问题。
大众用的编译器并不是所有的功能都能用的。
#6
alex_yr2010-07-12 18:00
我用Quincy 2005编译成功了
1