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

C++

Войти
Регистрация
Восстановить пароль
 
 
Inversus
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 12
#1

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

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

Всем привет !

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

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()'

Уже долго туплю над этим, похоже сам не въеду, разъясните что не так.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2016, 00:05     Передача указателя на функцию-член
Посмотрите здесь:

Передача указателя на функцию-член класса - C++
Необходимо передать фунцию-член класса как аргумент в функцию другого класса. Код: Файл main.cpp #include "head.hpp" int...

Передача указателя в функцию - C++
Здравствуйте. Прошу помощи, сижу уже пару часов читаю мануалы, но так и не смог до конца понять, что мне делать. Есть вот такой код: ...

Передача указателя на функцию - C++
Есть класс в котором: typedef void(*setChar)(int x, int y, wchar_t c); void Paint(setChar SetChar) В другом классе...

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

Передача указателя на функцию - C++
Доброго дня Форумчане. Хотелось бы узнать как вызывать функцию получив на нее указатель? пример class C1 { public: void...

Передача указателя в функцию - C++
Здраствуйте. Если не охота читать гору текста то этот абзац + последущий за ним код можете пропустить. Задали на лабе сделать некий...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
7101 / 5278 / 267
Регистрация: 10.12.2010
Сообщений: 23,274
Записей в блоге: 17
03.09.2016, 00:29     Передача указателя на функцию-член #41
Кроме двух указателей нужно еще и как то хранить типы.
Цитата Сообщение от Inversus Посмотреть сообщение
Да видел эту каркалыгу. Мне вот интересно, люди на хабре вообще проверяют то что им преподносят, или просто с умным видом поддакивают - мол, да да, мы умные, мы во всем разобрались. Пример даже не компилируется - два предупреждения и две ошибки.
Лично у меня компилится и работает (MSVC2010 и RAD XE3).

http://ideone.com/cVHRAL
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2016, 00:40     Передача указателя на функцию-член
Еще ссылки по теме:

Передача указателя на метод в функцию - C++
Подскажите плиз. Есть некий класс и в нём метод: ... DWORD WINAPI func(LPVOID lParam) { ... return 1; } ...

Передача указателя в функцию по ссылке - C++
Почему невозможно передать указатель в функцию по ссылке? void function(int & (*a)){ ... ... ... } void main(){ int x; ...

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

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

Передача в функцию указателя на указатель - C++
Добавление нового элемента в начало списка: void Add_Beg(List **u, Data &x) // Почему в 1 аргументе функции указатель на указатель? { ...


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

Или воспользуйтесь поиском по форуму:
Fulcrum_013
661 / 729 / 72
Регистрация: 14.12.2014
Сообщений: 5,698
Завершенные тесты: 3
03.09.2016, 00:40     Передача указателя на функцию-член #42
Цитата Сообщение от Inversus Посмотреть сообщение
В процессоре как правило не стоит задачи отлавливать каждый бит шины, в отличии от контроллера.
Именно такая задача и стояла. Кроме работы с ком-портами садились на шину УВМ совсем другой архитектуры через самодельный адаптер.
Цитата Сообщение от Inversus Посмотреть сообщение
Тем не менее стандартными средствами AVR можно отловить только внешние прерывание целого порта (коих в моем случае всего 3), а дальше - сам изголяйся
. То же самое и у КР580 и у интела причем у интела прерываний 16 а портов целая простыня (т.е. на одном прерывании висит куча портов потом еще разбирайся опрашивая регистры внешних устройств кто сказал царя не надо ). И у всего что видел тоже так.

Цитата Сообщение от Inversus Посмотреть сообщение
Во вторых Я не стал с нуля писать обработку прерываний, а взял за основу известный код, (но не ООП однако)
Ну это похоже первая ошибка и главная в работе с прерываниями. Обработчику прерывания обычно нужна не абсолютная универсальность а универсальность в рамках задачи или даже подзадачи. Т.е. обработчик или наборы обработчиков лучше делать самостоятельно. Но для этого нужно чуток по глубже разобраться как прерывания функциклят. Т.е. научится мыслить прерывааниями. Это кстати очень на мультипоток похоже только с приоритетами.
Цитата Сообщение от Inversus Посмотреть сообщение
В целом, программа работает и в нынешнем виде, но с костылями. Просто хотелось элегантности и универсальности.
Ну если дело касается прерываний то обработчик прерывания вызывающий делегата это не костыль а неизбежность. Если нужно скажем по своему делегату на каждый пин сделать можно обработчику прерываний дать массив делегатов и будет для каждого пина своего делегата вызывать. Это в принципе одно и тоже что дать ему массив интов которые передавать дальше в какую то функцию выбирая нужный при срабатывании каждого определенного бита.
Yandex
Объявления
03.09.2016, 00:40     Передача указателя на функцию-член
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru