使用嵌套函数时,Ostream 输出提供额外地址
Ostream output gives extra adress, when using nested functions
我有几个函数带有处理 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 );
}
我有几个函数带有处理 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 );
}