LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1233|回复: 3

怎么初始化结构体的const成员?

[复制链接]
发表于 2006-1-4 13:57:37 | 显示全部楼层 |阅读模式
struct { const int c;};

这个c怎么赋值呢?:thank
发表于 2006-1-4 16:43:35 | 显示全部楼层
  1. struct S
  2. {
  3.         const int c;
  4. };
  5. int main()
  6. {
  7.         struct S s1= {.c = 2};
  8.         struct S s2 = {2};
  9.         return 0;
  10. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-4 17:06:26 | 显示全部楼层
可以的。(“.”是表示只为这个成员赋值)

再问:如果是static const成员呢?我在结构体中定义,根本都不行;然后就只能改成了class,这回是直接在声明时就要初始化了,不知理解是否正确:
class a {
int b;
const static int c=2;
} ;
如果去掉static声明,编译时会说making `c' static
回复 支持 反对

使用道具 举报

发表于 2006-1-4 18:07:31 | 显示全部楼层
1. 在cpp中,struct和class除了访问控制有点不一样(前者默认public,后者默认private),其他都一样,class能做的struct一样能做到

2. const static成员除了直接在类里面赋值以外,还可以通过这样赋值:
  1. const int a::c = 2;
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表