【问题标题】:'operator <<' why is it not working,the print method. c++'operator <<' 为什么它不起作用,打印方法。 C++
【发布时间】:2021-11-27 02:11:24
【问题描述】:

我现在正在学习 cpp,当我使用打印运算符实现卡片类时,这很可悲“二进制表达式的无效操作数('std::ostream'(又名'basic_ostream')和'const Suits')”。另外,我正在为 IDE 使用 Xcode。感谢您的帮助!

#include <iostream>




enum class Suits : char {clubs='C',diamonds='D',hearts='H',spades='S'};

enum class Faces : int {two=2, three, four, five, six, seven, eight,
  nine, ten, jack, queen, king, ace /*14*/};
  
class Card {
public:
  
    Card(Faces aFace=Faces::ace, Suits aSuit=Suits::clubs){
        suit=aSuit;
        face=aFace;
    }
  
  ~Card();
  
  
    friend std::ostream &operator<<(std::ostream& output, const Card &s){
        output << s.suit;
            return output;
    }
  
protected:
  Suits suit;
  Faces face;
};

【问题讨论】:

    标签: c++ xcode operator-overloading declaration definition


    【解决方案1】:

    您需要在 Card 实现之上实现 std::ostream &amp;operator&lt;&lt;(std::ostream&amp; output, const Suits &amp;s)

    您可以简单地在 Suits 类中实现它,就像您对 Card 类所做的那样。

    【讨论】:

      【解决方案2】:

      根据错误消息,您没有为Suits 类型的对象定义operator &lt;&lt;,该operator &lt;&lt; 的主体中使用Card 类型的对象

      output << s.suit;
      

      也就是说你还需要定义操作符

      std::ostream & operator <<( std::ostream &, const Suits & );
      

      也许您还需要为 Faces 类型的对象定义类似的运算符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-07
        • 2023-03-04
        • 1970-01-01
        • 2018-02-10
        • 2015-06-16
        • 1970-01-01
        • 2023-03-03
        • 2019-07-13
        相关资源
        最近更新 更多