Форум программистов, компьютерный форум CyberForum.ru

Передача функции (как параметра) в функцию унаследоваемого класса - C++

Восстановить пароль Регистрация
 
integerBrain
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 14
16.06.2013, 10:44     Передача функции (как параметра) в функцию унаследоваемого класса #1
Доброго времени суток. Есть класс (в моем случае это Sprite) и я создаю произвольный класс (например Game : public Sprite). У меня есть в Game функция draw (в Sprite она тоже есть, но для отрисовки всех объектов я использую vector<Sprite *> и выходит, что если я запущу цикл для вектора то он выполнит только Sprite::draw(), а то что было в Game::draw() даже не тронет) и я хочу эту функцию Game::draw передать в унаследоваемый класс Sprite через функцию Sprite::setDrawFunc(void f(void)); также есть функция (правда я не уверен что это вообще) void* Sprite::func(void) и в функции Sprite::setDrawFunc я пишу func = f; Но ничего не выходит. Пожалуйста подскажите, что я делаю не так. Возможно можно как-то решить проблему по другому.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
16.06.2013, 11:04     Передача функции (как параметра) в функцию унаследоваемого класса #2
Да, это проблема возникала не только у вас. Для её решения придумали целый механизм виртуальных функций и встроили его в язык.
integerBrain
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 14
16.06.2013, 11:20  [ТС]     Передача функции (как параметра) в функцию унаследоваемого класса #3
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Да, это проблема возникала не только у вас. Для её решения придумали целый механизм виртуальных функций и встроили его в язык.
Круто, спасибо. Я еще хочу спросить можно ли как-то делать виртуальную функцию и в наследнике её переопределять так, чтоб не переписывать её а дополнять. В моем случае в Sprite::draw() идут очень важные действия без которых Game::draw() просто не имеют смысла.

Добавлено через 6 минут
//извините за спам
Все же получится если я напишу в виртуальной функции Sprite::draw(); Да?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
16.06.2013, 11:40     Передача функции (как параметра) в функцию унаследоваемого класса #4
Да. Всё получится именно так, как вы хотите.
Yandex
Объявления
16.06.2013, 11:40     Передача функции (как параметра) в функцию унаследоваемого класса
Ответ Создать тему
Опции темы

Текущее время: 06:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru