操作员内部操作员不工作

时间:2010-03-12 10:44:14

标签: c++ operators

char b;

operator<<(cout,(operator>>(cin,b)));

这不是用c ++编译的,因为所有8个重载都无法转换此类型。

任何人都可以解释这个......

是返回类型的问题...........

3 个答案:

答案 0 :(得分:6)

流提取操作,即op>>返回类型为istream&的对象。 op<<没有以istream&作为其第二个参数的重载。您需要拆分这两个动作或定义一个这样的重载。

答案 1 :(得分:0)

char b;
operator<<(cout,(operator>>(cin,b),b));

答案 2 :(得分:0)

问题是可以工作的输出运算符需要void*,但这是一个成员。如果将其更改为以下内容,则会将istream&返回的operator>>转换为void*并输出(如果提取有效,则为空指针,非否则为NULL指针):

cout.operator<<(operator>>(cin,b));

我不太确定你为什么要这样做。你能详细说明吗?如果要立即从cin输出所有内容,请使用底层缓冲区

cout << cin.rdbuf();