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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена четырехбитной комбинации на другую http://www.cyberforum.ru/cpp/thread1799854.html
Имеется поток, перенесенный на GPU после преобразованный в битовый поток. Необходимо заменить 4 бита на другие (правила перехода записаны в блокноте, формат файла *.mdt),со сдвижкой после каждого преобразования на 1 бит(так как после этого произвожу проверку и ищу нужную синхрокомбинацию). Сделал ввод, перенос на видюху, перевод в биты, поиск синхры. Помогите не могу дойти никак до этого...
C++ перенести скрипт с Autoit на С++ Доброго всем времени суток Нуждаюсь в переносе небольшого скрипта с Autoit на С++ переписать на плюсы у самого знаний не хватает =( #include <SQLite.au3> #include <SQLite.dll.au3> $file=FileRead(@ScriptDir&'\1.txt') $str=StringRegExp($file,'+',3) http://www.cyberforum.ru/cpp/thread1799698.html
Запись видео с веб камеры C++
Новичок в этом деле. Я даже не знаю в какую тему мой вопрос опубликовать. Сейчас набираю теорию для программы. Попытался погуглить, ничего не нашёл(не знаю как вопрос задать). Вопрос следующий... Как можно записать видео с веб камеры? Какую библиотеку подключать? Какие команды можно использовать? Огромные ответы писать не нужно. Меня надо просто направить. Но если не сложно и не лень, то...
Нужен совет по способу реализации игры в словарь C++
Доброго времени суток, перейду сразу к делу. Есть идея программы - своеобразный тренер для изучения английских слов. То есть имеем такую программу: 1) Запускаем, выбираем файл со словами(либо скачать словарь, либо самому заполнить какой-нибудь .txt файл нужными словами) и количество, которое хотим попереводить. 2) Далее на экране появляется слово и нужно вписать в поле перевод, если он...
C++ Замена функциям форматирования из CRT http://www.cyberforum.ru/cpp/thread1797177.html
Есть ли какая-нибудь замена функции vsnwprintf из CRT? StringC...VPrintfW внутри себя также вызывает ее. В итоге все сходится к __stdio_common_vsnwprintf из ucrtbase.dll. Не хочется заново подключать весь мусор из CRT к проекту из-за одной функции.
C++ Как парсить и как записать в json? Привет, никак не могу разобраться как подключить и работать с json в с++ какие библиотеки нужно подключить (желательно ссылку на них) и как парсить json, и как записать в json скиньте пример кода, у кого что есть, спасибо подробнее

Показать сообщение отдельно
Inversus
0 / 0 / 0
Регистрация: 28.08.2016
Сообщений: 12
29.08.2016, 10:02  [ТС]     Передача указателя на функцию-член
Становится все интереснее)

это объявления прототипов функций.
Действительно, читается двояко. Хотя Я привык что прототипы пишутся перед main() - странно что вылазит именно такая ошибка. На самом деле у этих классов есть конструкторы с параметрами, здесь Я их просто убрал для упрощения.

В общем код
C++
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::*)());
};
void Encoder::setSpinFunc(void(Menu::*i)()) {
  ;
}
int main()
{
    Menu m;
    Encoder e;
    e.setSpinFunc(&Menu::spin);
}
действительно прокатывает, но как уточнил Fulcrum_013 - полагаю что мне нужно передавать именно функцию-член объекта.

Вот это (добавил конструкторы)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Menu {
    public:
    Menu::Menu(char* str)
    void spin();   
};
 
Menu::Menu(char* str) {
   ;
}
 
void Menu::spin() {
   ;
}
 
 
class Encoder {
  void (Menu::*spin)();
 
  public:
    Encoder(char a, char b, int p);
    void setSpinFunc(void(Menu::*i)());
};
 
Encoder::Encoder(char a, char b, int p) {
    ;
}
 
void Encoder::setSpinFunc(void(Menu::*i)()) {
  spin = i;
}
 
 
int main()
{
    Menu m("a1|a2|a3");
 
    Encoder e(1,2,3);
    e.setSpinFunc(m.spin);
}
-прокатывает в одном компиляторе и не прокатывает в другом -
no matching function for call to 'Encoder<Menu>::setSpinFunc(<unresolved overloaded function type>)'

Т.е. идея следующая - создается экземпляр Menu и экземпляр Encoder, в Encoder запоминается указатель на spin, и затем из некоторой функции-члена Encoder необходимо периодически вызывать spin. А в каких случаях может понадобиться передавать функцию-член класса ? Или можно и через класс и через объект ? Fulcrum_013, не затруднит дать развернутый ответ с примерами и с вызовом spin из Encoder ?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru