我正在尝试为我的stream
类实现一个操纵器。我对操纵器不太了解,但我认为我做的都是正确的。代码的相关部分如下:如何正确实现C++流操作符endl?
class stream
{
public:
stream& operator<<(bool b) { // send bool value and return *this; }
stream& operator<<(const char str[]) { // send string and return *this }
};
inline stream& endl(stream& s)
{
return s << "\r\n";
}
class stream stream;
int main()
{
stream << endl;
}
我不知道我在做什么错的,但不是调用endl
编译器在调用stream::operator<<(bool)
。任何想法?
你的'endl'是一个函数而不是一个对象。 –
是的。怎么了? – rrd
所以'endl'实际上是一个指向函数*的指针(例如一些数字,如0x3758fd ..),因此只能在您的情况下将数字转换为'bool',以便选择过载。 (请看@ nwp的回答以作澄清) –