Я изучаю C++, программируя игру. Я использую SDL для отображения моих объектов и фабричной структуры, чтобы все это было организовано. Я выделил первый объект (автомобиль), элементы управления (клавиатура) и дисплей (монитор). В моем основном классе я вызываю класс монитора, чтобы отобразить окно, в котором я должен рисовать изображения. Если нажата клавиша, автомобиль должен реагировать на это путем перерисовки изображения. Проблема в том, что я инициализировал монитор в основном классе, и я не могу получить к нему доступ в своем классе автомобилей. Я пробовал разные вещи, но ничего похожего на трюк.Пример экземпляра класса C++
Так вот главный класс
Game::Game(GuiFactory* factory) {
bool is_running = true;
Car* car = factory->createCar();
car->drawCar();
// create factory specific window
Monitor* monitor = factory->createMonitor();
// create factory specific keyboard
Keyboard* keyboard = factory->createKeyboard();
while (is_running) {
// keyboard input
string key_input = keyboard->getKeys();
if (key_input == "quit") {
is_running = false;
} else if (key_input != "") {
if(key_input == "right"){
car->turnRight(monitor);
}
}
}
}
У меня есть основной класс автомобиля и класс SDLCar, который наследуется автомобиль.
class Car {
public:
Car();
virtual ~Car();
virtual void drawCar() = 0;
virtual void turnRight() = 0;
};
Вот где я запутался:
class SDLCar : public Car {
public:
SDLCar();
virtual ~SDLCar();
void drawCar();
void turnRight(SDLMonitor& monitor);
// ^^^^^^^^^^^^^^^^^^^
};
Может кто-нибудь объяснить?
Монитор является указателем. Разберите его, чтобы получить ссылку. Это проблема? Кстати, как вы удаляете машину? –
'автомобиль-> turnRight (* монитор);' должен делать трюк. –
Неясно, как насчет подчеркнутой линии вызывает путаницу. Это просто, что у вас есть указатель на основную функцию, в то время как метод принимает ссылку, что приводит к ошибкам компилятора? – sth