C++相談室2

このエントリーをはてなブックマークに追加
545デフォルトの名無しさん
>>536
typeidバトラー

#include <iostream>
#include <typeinfo>
#include <stdlib.h>
struct Player {
 int getPower() { srand((int)&typeid(*this)); return rand(); };
 const char *getName() { return typeid(*this).name(); };
 virtual char* say() = 0;
 static Player& battle(Player& a, Player& b) {
  int ap = a.getPower();
  int bp = b.getPower();
  cout << a.getName() << " power : " << ap << endl;
  cout << b.getName() << " power : " << bp << endl;
  Player& winner = (ap > bp) ? a : b;
  cout << "..." << winner.getName() << " win." << endl;
  cout << "『" << winner.say() << " 』" << endl;
  return a;
 };
};
struct Monar : Player {
 char* say() { return "モナー"; };
};
struct Giko : Player {
 char* say() { return "ゴルァ"; };
};
int main() {
 Monar m;
 Giko g;
 Player::battle(m, g);
}