質問する前に:はい、これは大学の課題です。
割り当ては非常に簡単です。機能が追加されたホイストカードゲームを実装します。アシスタントは私たちに継承と「会う」ことを望んでおり(このコースを受講するのは2回目なので、それが何であるかを知っています)、カードクラスに次を使用するように指示しました。派生元の基本クラスのカードを作成します。彼らが持っているスーツ(ハート、ダイアモンド、...)に応じて4つの継承されたクラス。
ここで継承を使用するのはかなり奇妙だと思います(これらのクラスには.fSuit
とにかくデータメンバーがあるため)。まだ見ていないvirtual
ので、ここでは使用しません。これはコーディングするのはそれほど難しいことではありませんが、私がこれに関して抱えている問題:operators
カードを比較するために派生する必要がありますが、派生したクラスは互いに比較されない場合があります(コンパイラはアシスタントに従ってエラーをスローする必要があります)。私は最初に使用friend bool operator<(Card&, Card&)
しましたが、フレンド関数は派生クラスに関連付けられておらず、派生クラスは基本クラスであるかのように処理されることを学びました。
コードを彼が望むように機能させるにはどうすればよいですか?演算子の使用をやめfriend
てCardクラスの一部にすることはできますが、派生クラスを相互に比較することはできます。私は何かが足りないのですか?よろしくお願いします。
ps:ソリューションをコーディングするのがまったくクリーンでない場合は、比較する前に、Cardクラスの演算子部分のスーツをチェックする方がよいでしょう。
編集:彼はまた、1つの演算子def/declをすべての派生クラスに対して一度に機能させたいと考えていました。派生クラスごとにフレンド演算子を作成することも、考えられる解決策です。