下面的代码有什么问题?

wengzuliang 2003-12-03 10:27:44
下面的代码有什么问题?如何改正?
class MyClass { /* ... */ };
void Display(MyClass &o) { cout << o; }
...全文
26 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wengzuliang 2003-12-04
  • 打赏
  • 举报
回复
^_^ 大家也这么认为阿,我还以为其中有什么奥秘,谢谢大家了。结帐!
liquanle 2003-12-04
  • 打赏
  • 举报
回复
你没有构造函数呀。
galaxy_fxstar 2003-12-03
  • 打赏
  • 举报
回复
这种写法没有见过!
cxq249 2003-12-03
  • 打赏
  • 举报
回复
两种解决途径:
1. 像楼上说的:重载<<操作符;
2. 在void Display(MyClass &o)函数中输出类MyClass的成员。肯定不能直接写cout<<o;
zpengenpz 2003-12-03
  • 打赏
  • 举报
回复
应该对<<运算符进行重载吧,像下面:
ostream& operator<<( ostream &os,const MyClass &rhs )
{ /* ...... */ }
然后将他声明为MyClass的友元就行了!
qinhawk27 2003-12-03
  • 打赏
  • 举报
回复
分其实不重要,
我觉得csdn给了我们一个交流的平台才是我们应当感谢的:)
qinhawk27 2003-12-03
  • 打赏
  • 举报
回复
up!

楼上说得好
不过建议还是使用重载<<运算符,那样的话,你要输出MyClass中其他成员数据时就不用每次都用'.成员名'的形势了。
关于重载。如果不了解的话,可以参考《c++ primer plus(第四版)中文版》第11章
讲得还算详细
smalltalk 2003-12-03
  • 打赏
  • 举报
回复
奶油狗分太多,不要给他,给我!!
fireseed 2003-12-03
  • 打赏
  • 举报
回复
不知道你的MyClass里面写了什么

如果什么也没有写,那么cout << o肯定是错的

cout是个ostream模版类的对象,ostream重载的<<运算符只能支持很有限的几种类型,比如double、int、char、char*等,你把你的MyClass的对象的引用o做为ostream中<<运算符的参数当然不能被<<所识别啦,也就不能通过了!

有两种解决途径,一是像我上面说的,输出MyClass的一个成员。另一种方法是重载一个<<运算符,使ostream支持你的MyClass对象的输出。


不知道你会不会结贴,给分?
fireseed 2003-12-03
  • 打赏
  • 举报
回复
class MyClass { public: int n; };
void Display(MyClass &o) { cout << o.n; }

64,682

社区成员

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

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