У меня огромная проблема, намного больше, чем то, что я собираюсь опубликовать, но если кто-то может помочь мне с этим, то отсюда все будет гладко.
Итак, мой вектор указателей ОТКАЗЫВАЕТСЯ распознавать его производные классы. Позволь мне объяснить.
У меня есть класс объектов Player, из которых происходят Warrior и Wizard. В задании мне предлагается сохранить указанные объекты (Воин и Волшебник) в векторе указателей объектов Player. Это то, что у меня есть до сих пор:
vector<Player *> players;
cout << "Please enter the number of players" << endl;
cin >> numOfPlayers;
total = amountPlaying(numOfPlayers);
for(int i = 0; i < total; i++)
{
temp = members();
if (temp == "Warrior" || temp == "warrior")
players[i] = new Warrior();
if (temp == "Wizard" || temp == "wizard")
players[i] = new Wizard();
else
{
cout << " wrong input, try again " <<endl;
i--;
}
cin >> *players[i];
}
Функция членов:
string members()
{
string response;
cout << "Please select a Warrior or Wizard" << endl;
cin >> response;
return response;
}
Я перегрузил Warrior и Wizard, чтобы они принимали ввод через cin, но не через Player (как сказано в задании). Вот как выглядит Воин (Волшебник такой же, но с Волшебником):
istream& operator>>(istream& in, Warrior& warrior)
{
int base_strength, base_weapon_level, base_weapon_type;
cout << "Please enter his/her weapon of choice (1 = sword, 2 = axe, 3 = bow, 4 = knife)" << endl;
in >> base_weapon_type;
cout << "Please enter his/her weapon level" << endl;
in >> base_weapon_level;
cout << "Please enter strength" << endl;
in >> base_strength;
warrior.set_power(base_strength);
warrior.set_weapon_level(base_weapon_level);
warrior.set_weapon_type(base_weapon_type);
return in;
}
Теперь проблема в том, что я получаю эту ошибку (в строке с cin >>*players[i]):
ошибка C2679: двоичный '>>': не найден оператор, который принимает правый операнд типа 'Player' (или нет приемлемого преобразования)
Теперь, как мне это исправить? Я чувствую, что он не будет воспринимать его как Воина или Волшебника, он ВСЕГДА будет воспринимать его как Игрока, но я не хочу этого!
P.S. Я знаю, что все это кажется излишним и далеким от оптимизации, но именно так хотел мой профессор. :|
Любая помощь будет оценена по достоинству, так как я застрял на этом НА ЧАСЫ! Спасибо спасибо спасибо!
-Джон