搜索
查看: 2319|回复: 15
打印 上一主题 下一主题

重载<<问题(该问题适用于C++)

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-22 16:11:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
我自己定义了一个类,并重载了<<运算符(不是作为友元运算符函数,而是完全赋予新功能),然后在Debug时发现在同一语句中使用多次<<会报错。
现在我希望像类似cout中的<<一样在同一语句中使用多次<<,有办法吗?

最佳答案

查看完整内容

我猜 例如你定义的 operator
沙发
发表于 2013-7-22 16:11:36 | 只看该作者
我猜
例如你定义的 operator<<
返回值是不是A或者A& ?

如果猜错了就直接贴代码吧
板凳
 楼主| 发表于 2013-7-22 16:38:51 | 只看该作者
代码
http://codepad.org/HxcWTApr
地板
 楼主| 发表于 2013-7-22 16:39:08 | 只看该作者
代码
http://codepad.org/HxcWTApr
5#
 楼主| 发表于 2013-7-22 16:40:28 | 只看该作者
rosynirvana 发表于 2013-7-22 16:32
我猜
例如你定义的 operator

返回值是void类型的
6#
发表于 2013-7-22 16:53:37 | 只看该作者
981013 发表于 2013-7-22 16:40
返回值是void类型的

void不行
返回值要是A&或者A才可以
7#
 楼主| 发表于 2013-7-23 12:48:18 | 只看该作者
rosynirvana 发表于 2013-7-22 16:53
void不行
返回值要是A&或者A才可以

解决了,谢谢
另外问一下,模板类如何进行typedef操作?
8#
发表于 2013-7-23 13:00:31 | 只看该作者
981013 发表于 2013-7-23 12:48
解决了,谢谢
另外问一下,模板类如何进行typedef操作?

查一查typename关键字的用法吧
9#
 楼主| 发表于 2013-7-23 13:08:00 | 只看该作者
本帖最后由 981013 于 2013-7-23 13:11 编辑
rosynirvana 发表于 2013-7-23 13:00
查一查typename关键字的用法吧


没有理解……
现在有一个类A
希望取一个别名叫B
但是报错了
代码:http://codepad.org/KgXjZtlF
把typedef移到template后面仍不对
10#
发表于 2013-7-23 13:24:07 | 只看该作者
981013 发表于 2013-7-23 13:08
没有理解……
现在有一个类A
希望取一个别名叫B

你要做到什么效果?
让什么等同于哪个类型?
11#
 楼主| 发表于 2013-7-23 13:25:47 | 只看该作者
rosynirvana 发表于 2013-7-23 13:24
你要做到什么效果?
让什么等同于哪个类型?

让类array大小写都对
12#
发表于 2013-7-23 13:40:58 | 只看该作者
981013 发表于 2013-7-23 13:25
让类array大小写都对

最简单的方法
#define array Array
13#
 楼主| 发表于 2013-7-23 13:46:05 | 只看该作者
rosynirvana 发表于 2013-7-23 13:40
最简单的方法
#define array Array

这么简单……我咋么没想到……
最后一个问题:能否重载“[/*填入一个int*/ ]=”实现对array中指定项目进行更改?
14#
发表于 2013-7-23 13:56:47 | 只看该作者
981013 发表于 2013-7-23 13:46
这么简单……我咋么没想到……
最后一个问题:能否重载“[/*填入一个int*/ ]=”实现对array中指定项目 ...

你是问模板类中的函数能不能重载?
15#
 楼主| 发表于 2013-7-23 14:58:20 | 只看该作者
rosynirvana 发表于 2013-7-23 13:56
你是问模板类中的函数能不能重载?

我知道可以
但是[ ]=操作符有三个参数
1.对象本身(无需提供)
2.[ ]中的int
3.=号后面的Typename型数据
我试着重载它,但失败了
(=[ ]原型:<array类对象>[<数组下标>]=<数据>,作用:为array的<数组下标>+1个成员赋值)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表