将 std::left 作为参数传递
Passing std::left as an argument
我有一个显示东西的功能,其中字符定位可以不同。函数如下所示:
void display(std::ostream & stream, std::ios_base & positioning);
但是,当我尝试像这样调用这个函数时
display_header(std::cout, std::left);
我收到以下错误
error: non-const lvalue reference to type 'std::ios_base' cannot bind to a value of unrelated type 'std::ios_base &(std::ios_base &)'
不明白为什么std::cout
可以顺利通过,std::left
却不通过。 lvalue reference to type 'std::ios_base'
与 lvalue reference to type 'std::ios_base'
有何不同?
与大多数 stream manipulators 一样,std::left
是函数,而不是变量。 display
需要改为
void display(std::ostream & stream, std::ios_base &(*positioning)(std::ios_base &));
为了接受 left
、right
、internal
或 std::ios_base &(std::ios_base &)
类型的任何其他操纵器。
我有一个显示东西的功能,其中字符定位可以不同。函数如下所示:
void display(std::ostream & stream, std::ios_base & positioning);
但是,当我尝试像这样调用这个函数时
display_header(std::cout, std::left);
我收到以下错误
error: non-const lvalue reference to type 'std::ios_base' cannot bind to a value of unrelated type 'std::ios_base &(std::ios_base &)'
不明白为什么std::cout
可以顺利通过,std::left
却不通过。 lvalue reference to type 'std::ios_base'
与 lvalue reference to type 'std::ios_base'
有何不同?
与大多数 stream manipulators 一样,std::left
是函数,而不是变量。 display
需要改为
void display(std::ostream & stream, std::ios_base &(*positioning)(std::ios_base &));
为了接受 left
、right
、internal
或 std::ios_base &(std::ios_base &)
类型的任何其他操纵器。