请问高手关于重载操作符“<<”的简单问题,100分

liuwenbo_wenbo 2004-05-13 09:43:13
//我编写了一个类需要重载操作符"<<",如下
class myclass{
...
friend ostream & operator<<(ostream &,const myclass &);
public :
...
char * to_str(){ return _string;}
private
...
char * _string;
}
//操作符函数定义如下
ostream& operator<<(ostream & os,const myclass &myc)
{ //为什么不能用如下的语句
//os<<myc.to_str();
os<<myc._string;
return os;
}
我想问的是为什么我用"os<<myc.to_str()"输出时编译出如下错误

passing `const myclass' as `this' argument of `char * myclass::to_str()' discards qualifiers

谢谢!
...全文
56 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sungengyu 2004-05-13
  • 打赏
  • 举报
回复
将函数 char* to_str() ; 修改如下:

char * to_str() const{ return _string;}

可通过编译。
liuwenbo_wenbo 2004-05-13
  • 打赏
  • 举报
回复
感谢各位,本问题已经结贴 steel007(小宝) 80, freefalcon(心宇) 15, dengchengqiang(深入浅出) 5
freefalcon 2004-05-13
  • 打赏
  • 举报
回复
同意楼上
可以进一步限制为
const char * to_str() const { return _string;}
dengchengqiang 2004-05-13
  • 打赏
  • 举报
回复
破坏了常量性吧
steel007 2004-05-13
  • 打赏
  • 举报
回复
const变量中不能调用非const成员函数
你可以把
char * to_str(){ return _string;}
改为
char * to_str() const { return _string;}
liuwenbo_wenbo 2004-05-13
  • 打赏
  • 举报
回复
自己先顶一下

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧