>>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);
}