免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1654 | 回复: 7
打印 上一主题 下一主题

[C++] 语法问题,急!!!谢谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-21 20:25 |只看该作者 |倒序浏览
00048 00048 struct hdr_rtp {
00049         u_int32_t srcid_;
00050         int seqno_;
00051         //rtp flags indicating significant event(begining of talkspurt)
00052         u_int16_t flags_;
00053
00054         static int offset_;
00055         inline static int& offset() { return offset_; }
00056         inline static hdr_rtp* access(const Packet* p) {
00057                 return (hdr_rtp*) p->access(offset_);
00058         }

00059
00060         /* per-field member functions */
00061         u_int32_t& srcid() { return (srcid_); }
00062         int& seqno() { return (seqno_); }
00063         u_int16_t& flags() { return (flags_); }
00064 };

麻烦大家看一下蓝色部分!

我的问题是:为什么access函数的返回值类型是指向 结构体hdr_rtp 的指针,但  return语句 却返回的是对 静态变量offset_  的引用?这样写对吗?为什么要这样写?

谢谢!

论坛徽章:
0
2 [报告]
发表于 2010-03-22 08:44 |只看该作者
offset_只是作为Packet的access的参数!

论坛徽章:
0
3 [报告]
发表于 2010-03-22 09:28 |只看该作者
回复 2# huangwei0413


看   00057                 return (hdr_rtp*) p->access(offset_);
p原来指向Pakcet,在00057行强制类型转换为指向结构体hdr_rtp的指针,然后调用该结构体的成员函数access(),并将offset_作为参数,
现在问题是:access()函数的类型是对int的引用,同时这个对int的引用又作为00057行的返回类型,但由00056行知,函数类型是指向结构体hdr_rtp的
指针。虽然理论上可以进行强制类型转换,但我还是疑惑是怎样将一个对int的引用类型转换为指针类型的?

论坛徽章:
0
4 [报告]
发表于 2010-03-22 10:26 |只看该作者
回复 3# PB06210


->优先级比类型转换符高!

论坛徽章:
0
5 [报告]
发表于 2010-03-22 12:22 |只看该作者
回复 4# huangwei0413


    不对,()优先级高于->

论坛徽章:
0
6 [报告]
发表于 2010-03-22 12:46 |只看该作者
google static 作用域

论坛徽章:
0
7 [报告]
发表于 2010-03-22 15:54 |只看该作者
回复 6# prolj


    问题似与作用域无关,诚请明示!不胜感激!

论坛徽章:
0
8 [报告]
发表于 2010-03-22 20:21 |只看该作者
回复 4# huangwei0413


    再次查书求证,得知你说的是对的,问题也因此解决!在此说声谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP