我的功能很少,开关与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;
}
输出:" 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 );
}