Передача указателя на функцию-член как указателя на функцию

Итак, вот ситуация: я использую 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 и может делать то, что я описываю?)

5
задан Xeo 21 December 2011 в 17:17
поделиться