Я новичок в C ++, и я застрял в моей программе. Это программа, имитирующая настольную игру «Морской бой». Нам дали код для редактирования, и одна из вещей, которую нас попросили сделать, - заставить программу подсказать вам, для какого типа судна вы хотите сесть (всего 1 корабль в данный момент).
Нам дали для начала определенный класс корабля ( Подводная лодка ), который я превратил в родительский класс Корабль . Я планировал использовать производные классы для каждого из типов кораблей, но функции класса Game имеют параметр исходного класса Submarine (& submarine) (который теперь равен Ship , поэтому параметр - & Ship). Я пытаюсь выяснить, как динамически определить тип параметра, чтобы я мог использовать функцию, для которой когда-либо размещен корабль.
Есть ли способ сделать это? Мы только что изучили родительские / дочерние классы и еще не изучили шаблоны, что является распространенным методом, который я видел. Я также видел много использования виртуальных функций для решений, похожих на мои, но я не совсем понимаю, как это могло бы помочь моей ситуации.
Вот пример функции, о которой я говорил ранее (в классе Game ):
bool placePiece(Ship& piece) // Ship is parent class -- want it to be derived class (1 of 5 options) depending on which class is being used
{
cout << "What coordinate do you want to place the " << toLower(piece.getName()) << " (length "<<piece.getLength()<<") at?\n";
string coordinate = toLower(requeststring());
cout << "What direction do you want the piece to go? (up, down, left or right)\n";
string direction = toLower(requeststring());
piece.setPiece(rowCharToInt(getFirstChar(coordinate)), getFirstInt(coordinate)-1, getFirstChar(direction));
return isValidPlacement(playerBoard, piece);
}
Пожалуйста, дайте мне знать, если потребуется дополнительная информация!
Спасибо