搜索
bottom↓
回复: 10

请教个C++函数模板“<>()”符号的问题

[复制链接]

出0入0汤圆

发表于 2019-8-8 15:59:30 | 显示全部楼层 |阅读模式
本帖最后由 mahengyu 于 2019-8-8 16:28 编辑

我在看ROS(机器人操作系统)的例程,里面有一个语句:
  1. ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
复制代码

这里advertise是成员函数,请问它既有尖括号也有圆括号是什么用法?有人说尖括号显式指定了圆括号参数的类型,我看了下面的源码,认为这种解释是错的
advertise,它的声明如下图,声明在这个链接

然后我又查看了advertise的定义,如下图,定义在这个链接中的249行

我的疑问是,定义中,M为何根本没出现在advertise函数的参数列表里,直接出现在了函数体中?这种用法我在C++ primer中没找到答案。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入93汤圆

发表于 2019-8-8 16:20:30 | 显示全部楼层
泛型不用考虑那么多,就当做宏定义替换去理解就好了。它实际上就是在编译期间直接替换而形成了各种不同的重载函数

出0入8汤圆

发表于 2019-8-8 16:22:50 | 显示全部楼层
你怕是买了本假的《C++ Primer》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2019-8-8 16:26:52 | 显示全部楼层
本帖最后由 mahengyu 于 2019-8-8 16:34 编辑
canspider 发表于 2019-8-8 16:22
你怕是买了本假的《C++ Primer》


你的解释应该是错的,我之前就看到这个地方了

出0入0汤圆

 楼主| 发表于 2019-8-8 16:57:52 | 显示全部楼层
takashiki 发表于 2019-8-8 16:20
泛型不用考虑那么多,就当做宏定义替换去理解就好了。它实际上就是在编译期间直接替换而形成了各种不同的重 ...

想知道它书中的源头,捂脸

出0入0汤圆

 楼主| 发表于 2019-8-8 20:14:39 | 显示全部楼层

出0入0汤圆

发表于 2019-8-8 21:38:30 来自手机 | 显示全部楼层
模版啊。。。

出0入0汤圆

发表于 2019-8-8 15:59:31 | 显示全部楼层
本帖最后由 GoingDown 于 2019-8-9 09:35 编辑
mahengyu 发表于 2019-8-8 16:26
你的解释应该是错的,我之前就看到这个地方了


别人没解释错,好不。
如果看了这段内容,还不明白,是不是应该许弃C++了。

模板参数类型,并不一定要出现在函数的参数列表中。

出0入0汤圆

发表于 2019-8-9 09:45:43 | 显示全部楼层
ROS中,这就是topic类型(模板),然后括号里面是topic名称和队列个数。

出0入0汤圆

发表于 2019-8-9 10:16:10 | 显示全部楼层
别人说对了还说别人解释错了,服。10086

出0入0汤圆

 楼主| 发表于 2019-8-9 10:47:11 | 显示全部楼层
GoingDown 发表于 2019-8-9 09:32
别人没解释错,好不。
如果看了这段内容,还不明白,是不是应该许弃C++了。

你说的挺有道理的,源程序只是传递一个数据类型,并没有传递实际参数,所以不需要也不能出现在参数列表中

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-16 15:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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