我正在尝试为一组数据实现参数化流操纵器。我按照推荐的简单方法进行操作:
class print_my_data
{
private:
. . .
public:
print_my_data(. . .) { . . . }
ostream& operator()(std::ostream& out)
{
return out << . . . << endl;
}
};
ostream& operator<<(ostream& out, print_my_data md) // <=== MY QUESTION BELOW IS ABOUT THIS
{
return md(out);
}
用法:
clog << print_my_data(. . .) << endl;
这很好用;但我真的不明白为什么它不起作用,除非我定义operator<<
!为什么它不调用与它相同的重载函数endl
?(即作为可以通过 应用于流的对象operator()
)