| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1219 人关注过本帖
标题:static在类的用法问题!
只看楼主 加入收藏
daemon1
Rank: 1
等 级:新手上路
帖 子:72
专家分:3
注 册:2011-4-14
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:10 
static在类的用法问题!
类中这样定义过不了:
(h文件中)
static const int bb=10;
 int k[bb];
(cpp文件中)
const int a::bb;
求解!
搜索更多相关主题的帖子: static 
2011-06-12 22:09
daemon1
Rank: 1
等 级:新手上路
帖 子:72
专家分:3
注 册:2011-4-14
收藏
得分:0 
Compiling...
hhh.cpp
C:\Users\Administrator\Desktop\c++\hhh.cpp(21) : error C2258: illegal pure syntax, must be '= 0'
C:\Users\Administrator\Desktop\c++\hhh.cpp(21) : error C2252: 'bb' : pure specifier can only be specified for functions
C:\Users\Administrator\Desktop\c++\hhh.cpp(22) : error C2065: 'bb' : undeclared identifier
C:\Users\Administrator\Desktop\c++\hhh.cpp(22) : error C2057: expected constant expression
C:\Users\Administrator\Desktop\c++\hhh.cpp(22) : warning C4200: nonstandard extension used : zero-sized array in struct/union
C:\Users\Administrator\Desktop\c++\hhh.cpp(25) : error C2039: 'bb' : is not a member of 'a'
        C:\Users\Administrator\Desktop\c++\hhh.cpp(19) : see declaration of 'a'
C:\Users\Administrator\Desktop\c++\hhh.cpp(25) : error C2734: 'bb' : const object must be initialized if not extern
C:\Users\Administrator\Desktop\c++\hhh.cpp(25) : error C2373: 'bb' : redefinition; different type modifiers
执行 cl.exe 时出错.


这是不是编译器问题啊!我用的是vc6++!
2011-06-12 22:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:4 
1. 换编译器
2. 类中定义了,就别在外部定义,即
要么.h中
static const int bb=10;

要么.h中
static const int bb;
.cpp中
const int a::bb = 10;
2011-06-13 08:11
duliningmiss
Rank: 2
等 级:论坛游民
帖 子:20
专家分:79
注 册:2011-6-10
收藏
得分:4 
我用的是VC9.0 在.h文件中定义static const int BUFFER_LENGTH = 64; 在.cpp中不用再定义或者声明,这样是可以正确使用的啊
2011-06-13 14:00
daemon1
Rank: 1
等 级:新手上路
帖 子:72
专家分:3
注 册:2011-4-14
收藏
得分:0 
回复 3楼 rjsp
不行啊!还是错啊!
Compiling...
hhh.cpp
C:\Users\Administrator\Desktop\c++\hhh.cpp(22) : error C2057: expected constant expression
C:\Users\Administrator\Desktop\c++\hhh.cpp(22) : warning C4200: nonstandard extension used : zero-sized array in struct/union
再求解!谢谢了!
2011-06-13 14:52
daemon1
Rank: 1
等 级:新手上路
帖 子:72
专家分:3
注 册:2011-4-14
收藏
得分:0 
回复 4楼 duliningmiss
我们要求要用vc6的!所以......
2011-06-13 14:53
yuutian
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:137
专家分:686
注 册:2010-10-27
收藏
得分:4 
c++中不允许这样给数组定义
    这样将bb放到数据中是错误的。
          你为何不直接将数组写成k[10]呢?
2011-06-14 18:03
daemon1
Rank: 1
等 级:新手上路
帖 子:72
专家分:3
注 册:2011-4-14
收藏
得分:0 
回复 7楼 yuutian
定义成常量,是可以作为数组大小的吧!
2011-06-14 21:34
mainchar
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2011-6-14
收藏
得分:4 
可以定义常量!

#define bb 10
int k[bb];
2011-06-14 21:54
specilize
Rank: 4
等 级:业余侠客
帖 子:126
专家分:247
注 册:2011-2-20
收藏
得分:4 
关于这个问题,Effective C++中有一个条款对其进行了详细的讨论。
static const int bb=10;像这种int类型的在头文件中定义static const成员变量并对其进行初始化,然后使用这个变量类作为数组的参数int k[bb];的用法是可以的,但是即使你已经对bb进行了初始化,还是必须在cpp文件中进行这样的定义 const int a::bb;但不用对其进行初始化。Effective C++中说可能比较老的编译器不支持这种行为,所以你可以这样做,在头文件中定义一个变量,但不对其进行初始化,即static const int bb;然后在cpp文件中对其进行初始化const int a::bb=10;
2011-06-14 22:42
快速回复:static在类的用法问题!
数据加载中...
 
   



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

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