У меня огромная проблема, намного больше, чем то, что я собираюсь опубликовать, но если кто-то может мне помочь с этим, тогда все будет гладко.
Хорошо, мой векторуказатели ОТКАЗЫВАЕТСЯ распознавать его производные классыПозвольте мне объяснить.
У меня есть класс объектов 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;
}
Я перегружен Воином и Мастером, чтобы принять ввод через cin, но не через Player (как было сказано в назначениик).Вот как выглядит Воин (Wizard такой же, но с Wizard):
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' (или нет приемлемого преобразования)
Как мне это исправить?Я чувствую, что он не воспримет его как Воина или Волшебника, он ВСЕГДА воспринимает его как Игрока, но я не хочу этого!
PS Я знаю, что все это кажется излишним и FAR из-за оптимизации, но это именно то, какмой профессор хотел, чтобы это было сделано.: |
Буду признателен за любую помощь, так как я застрял на часах на этом!Спасибо, спасибо, спасибо!
-Jon