gpt4 book ai didi

c++ - 使用嵌套函数时,Ostream 输出提供额外地址

转载 作者:行者123 更新时间:2023-11-28 05:37:06 26 4
gpt4 key购买 nike

我有几个函数带有处理 ostream 的开关来为要打印的对象指定确切的模板类型。但是不知何故,当我使用嵌套函数时,额外的地址出现在输出流中。

代码示例:

#include <iostream>

using namespace std;


ostream & tmp2( ostream & in )
{
return in << "out";
}

ostream & tmp( ostream & in )
{
return in << tmp2( in );
}

int main(int argc, char** argv)
{
int t = 2;
switch (t)
{
case 2:
std::cout << tmp;
}
return 0;
}

输出:“out0x600e08”

任何想法为什么会这样以及如何防止这种情况?

最佳答案

ostream & tmp( ostream & in )
{
return in << tmp2( in );
}

相当于:

ostream & tmp( ostream & in )
{
tmp2(in);
in << in; // This line causes the extra output.
return in;
}

您可能打算使用:

ostream & tmp( ostream & in )
{
return tmp2( in );
}

关于c++ - 使用嵌套函数时,Ostream 输出提供额外地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com