Итак, вот ситуация: я использую C ++, SDL и GLConsole вместе. У меня есть класс SDLGame
, в котором есть Init ()
, Loop ()
, Render ()
и т. Д. - по сути, это содержит логику для моего игрового класса.
GLConsole пока что хорошая библиотека - она позволяет мне определять CVars и тому подобное, даже внутри моего класса SDL. Однако при определении команд я должен указать ConsoleFunc
, который определяется как
typedef bool (*ConsoleFunc)( std::vector<std::string> *args);
Достаточно просто. Однако, как я уже сказал, все мои функции находятся в моем классе, и я знаю, что не могу передавать функции указателя на класс в качестве аргументов указателя на функцию. Я не могу определять статические функции или создавать функции вне моего класса, потому что некоторые из этих ConsoleFuncs должны иметь доступ к членам данных класса, чтобы быть полезными. Я бы хотел сохранить его в ООП, поскольку ... ну, ООП - это хорошо.
Ну, я на самом деле "решил" эту проблему, но она очень уродливая. У меня есть только экземпляр SDLGame
, объявленный как внешняя переменная, и я использую его в моем классе ConsoleFuncs / main.
Итак, вопрос: есть ли способ сделать это не так глупо и глупо, как я? (В качестве альтернативы: существует ли консольная библиотека, такая как GLConsole, которая поддерживает SDL и может делать то, что я описываю?)