免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ekil
打印 上一主题 下一主题

请教: 如何初始化const成员结构体!!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-07-13 18:04 |只看该作者

请教: 如何初始化const成员结构体!!!

to: mq110
   谢谢了. 那样不行的.我试过了...

to: prc
  谢谢, 我在边的贴子说过了.不能改TEMP这个结构体...

论坛徽章:
0
12 [报告]
发表于 2005-07-13 18:08 |只看该作者

请教: 如何初始化const成员结构体!!!

我要下班了.明天再论...
谢谢大家.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
13 [报告]
发表于 2005-07-13 20:26 |只看该作者

请教: 如何初始化const成员结构体!!!

可以这样
  1. A::A():temp(TEMP())
  2. {
  3. }
复制代码
但似乎没什么用,因为不能传自己的实参.而是靠内部类型的默认构造.因为结构体的构造是struct TEMP t={1,2};这种方式的,而列表初始化不能这样用,如果用struct TEMP t(1,2)就会调用构造函数.两者结合不了.
所以可以用一个函数来搞一下.

  1. TEMP f(int xx,int yy)
  2. {
  3.      TEMP t;
  4.      t.x = xx;
  5.      t.y = yy;
  6.      return t;
  7. }
  8. A::A():temp(f(1,2))
  9. {
  10. }
复制代码
不知道能不能达到你的目的?

论坛徽章:
0
14 [报告]
发表于 2005-07-13 22:07 |只看该作者

请教: 如何初始化const成员结构体!!!

来个狠的。

  1. struct TEMP
  2. {
  3.         int x;
  4.         int y;
  5. };

  6. class A
  7. {
  8. public:
  9.         A();

  10. private:
  11.         const TEMP temp;
  12. };

  13. A::A()
  14. {//我如何初始化temp??? 将她的值初始为: temp.x =1, temp.y=2
  15.         ((TEMP *)&temp)->;x = 1;
  16.         ((TEMP *)&temp)->;y = 2;
  17. }
复制代码


temp被声明为const类型,但是编译器是会给它分配内存单元的。既然如此,改变该内存单元的数值即可。

论坛徽章:
0
15 [报告]
发表于 2005-07-13 22:28 |只看该作者

请教: 如何初始化const成员结构体!!!

这样可以。

论坛徽章:
0
16 [报告]
发表于 2005-07-14 09:03 |只看该作者

请教: 如何初始化const成员结构体!!!

谢谢大家. 看来,没有更直接的办法了...
那就这样吧.

to : THEBEST
谢谢. 这可以可以.

to: prc
多谢, 这样可以.但应该有点太狠了... 哈哈.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP