![]()
//純粋仮想関数を持っている抽象クラス
class Hand
{
public:
virtual void Check(Hand *) = 0; //相手に問い合わせる
virtual void GuNiKachi() = 0; //グーに勝てるかどうかを返す
virtual void ChokiNiKachi() = 0; //チョキに勝てるかどうかを返す
virtual void PaNiKachi() = 0; //パーに勝てるかどうかを返す
};
|
class Gu : public Hand
{
public:
void Check(Hand * h) { h->GuNiKachi(); }
void GuNiKachi() { cout << "あいこです!\n"; }
void ChokiNiKachi() { cout << "グーの勝ちです!\n"; }
void PaNiKachi() { cout << "グーの負けです!\n"; }
};
|
class Choki : public Hand
{
public:
void Check(Hand * h) { h->ChokiNiKachi(); }
void GuNiKachi() { cout << "チョキの負けです!\n"; }
void ChokiNiKachi() { cout << "あいこです!\n"; }
void PaNiKachi() { cout << "チョキの勝ちです!\n"; }
};
|
class Pa : public Hand
{
public:
void Check(Hand * h) { h->PaNiKachi(); }
void GuNiKachi() { cout << "パーの勝ちです!\n"; }
void ChokiNiKachi() { cout << "パーの負けです!\n"; }
void PaNiKachi() { cout << "あいこです!\n"; }
};
|
int main()
{
Gu g;
Choki c;
Pa p;
//グーとチョキの対戦
cout << "グー vs. チョキ・・・";
c.Check(&g);
//グーとパーの対戦
cout << "グー vs. パー・・・";
p.Check(&g);
//グーとグーの対戦
cout << "グー vs. グー・・・";
g.Check(&g);
return 0;
}
|
![]()