У меня проблемы с выяснением, как правильно создать объект в зависимости от выбора пользователя.
В программе я спрашиваю пользователя, к какому классу он хочет принадлежать - рыцарь или волшебник.Я использую ввод «1» или «2» для представления «Рыцарь и волшебник».
Я сделал оператор переключения, и в случае 1 я объявил объект «Рыцарь» и то же самое для мастера.
Мне нужно использовать эти объекты вне оператора switch, но я не могу.Я попытался создать объект по умолчанию, сделав Player Player;но поскольку у класса Player есть чисто виртуальная функция, я тоже не могу этого сделать.
Как мне сделать это эффективно?
Это то, что у меня пока есть:
int main()
{
std::string plyrName;
int input;
bool foo = false;
std::cout << "What is your name?\n";
std::cin >> plyrName;
std::cin.ignore(1000, '\n');
std::cout << "\nWelcome, " << plyrName << ". What class would you like to be?\n";
std::cout << "1. Knight.\n2. Wizard.\n";
std::cin >> input;
while (input != 1 && input != 2)
{
if (foo == true)
std::cout << "Please enter 1 for Knight and 2 for Wizard.\n";
if (!(std::cin >> input))
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "\n";
std::cout << "Only integers are allowed.\n";
}
else
std::cout << "\n";
foo = true;
}
switch (input)
{
case 1:
{
Wizard player;
break;
}
case 2:
{
Knight player;
break;
}
}
std::cout << "\nHere is your player information summary.\n";
std::cout << player.classType();
system("pause");
return 0;
}
Мне нужно получить доступ к объекту player после того, как is был создан, потому что я хочу вывести пользователю, какой класс он выбрал.Классы Рыцаря и Волшебника имеют функцию для вывода этого.
РЕДАКТИРОВАТЬ: У меня есть дополнительный вопрос.На диаграмме Knight & Wizard имеет статическую переменную «специальное имя атаки».Как я могу получить доступ к этой переменной в основной функции?Решение использования unique_ptr означает, что указатель будет указывать на базовый класс Player, таким образом, не разрешая доступ к членам производного класса, таким как статическая переменная «имя специальной атаки».У меня есть недостаток в моем дизайне?