我的开关处理ostreams的函数很少,无法为要打印的对象指定精确的模板类型。 但不知何故,当我使用嵌套函数时,额外的地址会出现在输出流中。
代码示例:
#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;
}
输出: &#34; out0x600e08&#34;
任何想法为什么会这样以及如何防止这种情况?
答案 0 :(得分:1)
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 );
}