| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 734 人关注过本帖
标题:常数静态成员的初始化
只看楼主 加入收藏
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
结帖率:95%
收藏
已结贴  问题点数:10 回复次数:5 
常数静态成员的初始化
程序代码:
// 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];无法成立。(不要说用枚举,针对这个例子)。求解
搜索更多相关主题的帖子: 静态 成员 
2010-07-12 09:06
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:1 
#include <iostream>
using namespace std;

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

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

int main()
{
    return 0;
}

迭代的是人,递归的是神。
2010-07-12 11:31
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:0 
这句话是为了给类中声明的静态常数据成员定义个空间。

看了c++标准库几十页,好多不明白,后面还有很多见没见过的,深受打击,暂时打算放弃了。悲剧
2010-07-12 11:54
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:3 

原因是 你的代码很标准,你用的编译器不够标准。
你可以找个vc10的编译器试下。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-12 13:15
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:3 
这个我也试过,结果相似,我也认为是编译器的问题。
大众用的编译器并不是所有的功能都能用的。

南国利剑
2010-07-12 15:43
alex_yr
Rank: 1
等 级:新手上路
帖 子:3
专家分:4
注 册:2010-7-12
收藏
得分:3 
我用Quincy 2005编译成功了
2010-07-12 18:00
快速回复:常数静态成员的初始化
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029393 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved