Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 16
1

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

29.08.2016, 00:05. Показов 2911. Ответов 41
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет !

Необходимо передать функцию-член в качестве параметра другой функции-члену. Следующий код

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Menu {
    public:
    void spin();   
};
void Menu::spin() {
  ;
}
class Encoder {
  public:
    void setSpinFunc(void(Menu::*i)());
};
void Encoder::setSpinFunc(void(Menu::*i)()) {
  ;
}
int main()
{
    Menu m();
    Encoder e();
    e.setSpinFunc(m.spin);
}
вызывает ошибку: request for member 'setSpinFunc' in 'e', which is of non-class type 'Encoder()'

Уже долго туплю над этим, похоже сам не въеду, разъясните что не так.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2016, 00:05
Ответы с готовыми решениями:

Передача типа указателя на функцию
Всем привет. Недавно в теме начинающих возник вопрос, а можно ли передать тип (указатель на...

Передача указателя на CALLBACK функцию
делаю класс приложения для более быстрого создания программ и просто инкапсуляции всего и вся)) и...

Передача указателя на функцию-член класса
Необходимо передать фунцию-член класса как аргумент в функцию другого класса. Код: Файл...

Хранение в map указателя на функцию-член шаблонного класса
Здравствуйте! Сделал я себе вызов написать джунгли из ООП деревьев, типо, объекты обмениваются...

41
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2016, 00:29 41
Author24 — интернет-сервис помощи студентам
Кроме двух указателей нужно еще и как то хранить типы.
Цитата Сообщение от Inversus Посмотреть сообщение
Да видел эту каркалыгу. Мне вот интересно, люди на хабре вообще проверяют то что им преподносят, или просто с умным видом поддакивают - мол, да да, мы умные, мы во всем разобрались. Пример даже не компилируется - два предупреждения и две ошибки.
Лично у меня компилится и работает (MSVC2010 и RAD XE3).

http://ideone.com/cVHRAL
0
2063 / 1542 / 168
Регистрация: 14.12.2014
Сообщений: 13,402
03.09.2016, 00:40 42
Цитата Сообщение от Inversus Посмотреть сообщение
В процессоре как правило не стоит задачи отлавливать каждый бит шины, в отличии от контроллера.
Именно такая задача и стояла. Кроме работы с ком-портами садились на шину УВМ совсем другой архитектуры через самодельный адаптер.
Цитата Сообщение от Inversus Посмотреть сообщение
Тем не менее стандартными средствами AVR можно отловить только внешние прерывание целого порта (коих в моем случае всего 3), а дальше - сам изголяйся
. То же самое и у КР580 и у интела причем у интела прерываний 16 а портов целая простыня (т.е. на одном прерывании висит куча портов потом еще разбирайся опрашивая регистры внешних устройств кто сказал царя не надо ). И у всего что видел тоже так.

Цитата Сообщение от Inversus Посмотреть сообщение
Во вторых Я не стал с нуля писать обработку прерываний, а взял за основу известный код, (но не ООП однако)
Ну это похоже первая ошибка и главная в работе с прерываниями. Обработчику прерывания обычно нужна не абсолютная универсальность а универсальность в рамках задачи или даже подзадачи. Т.е. обработчик или наборы обработчиков лучше делать самостоятельно. Но для этого нужно чуток по глубже разобраться как прерывания функциклят. Т.е. научится мыслить прерывааниями. Это кстати очень на мультипоток похоже только с приоритетами.
Цитата Сообщение от Inversus Посмотреть сообщение
В целом, программа работает и в нынешнем виде, но с костылями. Просто хотелось элегантности и универсальности.
Ну если дело касается прерываний то обработчик прерывания вызывающий делегата это не костыль а неизбежность. Если нужно скажем по своему делегату на каждый пин сделать можно обработчику прерываний дать массив делегатов и будет для каждого пина своего делегата вызывать. Это в принципе одно и тоже что дать ему массив интов которые передавать дальше в какую то функцию выбирая нужный при срабатывании каждого определенного бита.
0
03.09.2016, 00:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2016, 00:40
Помогаю со студенческими работами здесь

Передача указателя на шаблонную функцию в другую функцию
Пишу тест для нескольких улучшений квиксорта с измерением времени. Функция benchmark принимает...

Передача указателя в функцию
Поиском не пользовался, возможно данный вопрос уже проскакивал. Проблема том, что VS2010 на отрез...

Передача указателя на функцию
Доброго дня Форумчане. Хотелось бы узнать как вызывать функцию получив на нее указатель? пример...

Передача в функцию указателя
Почему плохо передавать в функцию указатель на строку или массив и возвращать указатель на строку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
42
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru