我想知道如何将像std::endl这样的机械手传递给函数,然后在函数中使用传递的机械手。我可以这样声明这个函数:
void f(std::ostream&(*pManip)(std::ostream&));我可以这样称呼它:
f(std::endl);一切都很好。我的问题是弄清楚如何在f内部使用机械手。这不管用:
void f(std::ostream&(*pManip)(std::ostream&))
{
std::cout << (*pManip)(std::cout); // error
}不管编译器如何,错误消息归结为编译器无法确定要调用哪个operator<<。要编译我的代码,我需要在f内部修复什么?
发布于 2014-04-08 05:23:59
void f(std::ostream&(*pManip)(std::ostream&))
{
std::cout << "before endl" << (*pManip) << "after endl";
}或
void f(std::ostream&(*pManip)(std::ostream&))
{
std::cout << "before endl";
(*pManip)(std::cout);
std::cout << "after endl";
}https://stackoverflow.com/questions/22927906
复制相似问题