Я знаю, я знаю, есть масса простых ответов, которые охватывают большинство случаев, как этого избежать.
В моем случае я хочу использовать вводимую пользователем информацию для создания игроков ЦП в игре. Если пользователь выбирает простой режим, я хочу объявить и создать экземпляр класса EasyPlayer
. В противном случае я хочу объявить и создать экземпляр класса HardPlayer
. В любом случае конкретное имя переменной должно быть «cpu», а остальная часть кода работает с «cpu» без разбора.То есть все различия в том, как они работают, встроены в их разные классы, которые составляют подкласс класса CpuPlayer
.
Вот код:
// Set the opponent.
if (difficulty == 0){
EasyPlayer cpu = new EasyPlayer(num_rounds);
}
else{
HardPlayer cpu = new HardPlayer(num_rounds);
}
Это вызывает у меня постоянно раздражающую ошибку не удается найти символ
. Из того, что я могу прочитать, все говорят, что вы не можете делать объявления внутри такого условного выражения из-за проблем с областью видимости и вероятности того, что этого никогда не произойдет.
Если да, то каков правильный способ альтернативно объявить одну переменную как один из двух разных классов на основе пользовательского ввода?