代码之家  ›  专栏  ›  技术社区  ›  perilbrain

操作员内部操作员不工作

  •  0
  • perilbrain  · 技术社区  · 16 年前
    char b;
    
    operator<<(cout,(operator>>(cin,b)));
    

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

    有人能解释一下吗…..

    是返回类型……的问题。

    3 回复  |  直到 13 年前
        1
  •  6
  •   dirkgently    16 年前

    流提取操作,即 op>> 返回类型为的对象 istream& . 这个 op<< 没有需要 伊斯特瑞姆公司; 作为它的第二个参数。您需要拆分这两个操作或定义一个这样的重载。

        2
  •  0
  •   Johannes Schaub - litb    16 年前

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

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

    我不太确定你为什么要这样做。你能详细说明一下吗?如果你想输出 cin 立即使用底层缓冲区

    cout << cin.rdbuf();
    
        3
  •  0
  •   Steve Guidi    13 年前
    char b;
    operator<<(cout,(operator>>(cin,b),b));