//enum class Donator {
// 甲,
// 乙,
// 丙,
// 丁
//};
//
//ostream &operator<<(ostream &os, Donator donator) {
// switch (donator) {
// case Donator::甲 :
// os << "甲";
// break;
// case Donator::乙:
// os << "乙";
// break;
// case Donator::丙:
// os << "丙";
// break;
// case Donator::丁:
// os << "丁";
// break;
// }
// return os;
//}
//
//class Object {
// public:
// Object() = default;
//
// virtual string name() = 0;
//
//};
//
//class 甲 : public Object {
// public:
// string name() override {
// return "甲";
// }
//};
//
//class 乙 : public Object {
// public:
// string name() override {
// return "乙";
// }
//};
//
//class 丙 : public Object {
// public:
// string name() override {
// return "丙";
// }
//};
//
//class 丁 : public Object {
// public:
// string name() override {
// return "丁";
// }
//};
//
//vector<Object *> d = {new 甲, new 乙, new 丙, new 丁};
unordered_map<int, string> name_map = {
make_pair(0, "甲"),
make_pair(1, "乙"),
make_pair(2, "丙"),
make_pair(3, "丁")
};
void whoDonate() {
int honest_count = 0;
for (int i = 0; i < 4; i++) {
// 是丁捐的和不是丁捐的是互斥条件, 所以可以直接++
++honest_count;
if (i != 0) {
++honest_count;
}
if (i == 1) {
++honest_count;
}
if (honest_count == 1) {
cout << "是:" << name_map[i] << "捐的";
return;
}
}
}