【发布时间】:2012-04-15 02:06:13
【问题描述】:
致反对者:我知道这是一个结构不佳的问题。如果您向下滚动到答案,您会发现我发现了问题的根源。虽然这个问题本身可能没有帮助,但我希望答案能帮助遇到类似运算符重载问题的人。问题是它是什么;我无法确定任何可以使这个问题变得更好的编辑或修订。因此,如果您要投反对票,请同时添加建设性评论。谢谢。
我正在运行以下代码
myObject o = myObject();
cout << o << endl;
我的 (friend)
ostream& operator << (ostream& s, myObject o)
{
s << doStuff(o, s) << endl;
return s;
}
预期输出:
object contents
由于某种原因,实际输出包括内存地址:
5452ED48object contents
为什么?
【问题讨论】:
-
什么是
doStuff()?顺便一提。敲掉所有“myObject o = myObject();”商业。 “我的对象 o;”足够了。 -
@BenjaminLindley:如果
myObject是 POD,myObject o可能还不够。 -
信息不足,投票结束。
-
在
-
.doStuff()是一个遍历树的递归函数。我认为这无关紧要,因为在我添加方法之前就出现了错误。我认为我的问题可能有一个更通用的解决方案。也许我错了。我会尽快进行编辑。
标签: c++ debugging console operator-overloading ostream