Форум программистов, компьютерный форум 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++ Компиляция hello world...
Привет всем! У меня вопрос который может вызвать батхерт, но тем не менее. Поставил на виндус mingw и решил скомпилить через командную строку простейший хелоуворд. Но почему-то не хочет, да, конечно, он пишет ошибку, но что она значит не могу понять. Вот сам скрин
Запись видео с веб камеры C++
Новичок в этом деле. Я даже не знаю в какую тему мой вопрос опубликовать. Сейчас набираю теорию для программы. Попытался погуглить, ничего не нашёл(не знаю как вопрос задать). Вопрос следующий... Как можно записать видео с веб камеры? Какую библиотеку подключать? Какие команды можно использовать? Огромные ответы писать не нужно. Меня надо просто направить. Но если не сложно и не лень, то...
C++ Нужен совет по способу реализации игры в словарь http://www.cyberforum.ru/cpp/thread1798077.html
Доброго времени суток, перейду сразу к делу. Есть идея программы - своеобразный тренер для изучения английских слов. То есть имеем такую программу: 1) Запускаем, выбираем файл со словами(либо скачать словарь, либо самому заполнить какой-нибудь .txt файл нужными словами) и количество, которое хотим попереводить. 2) Далее на экране появляется слово и нужно вписать в поле перевод, если он...
C++ Замена функциям форматирования из CRT Есть ли какая-нибудь замена функции vsnwprintf из CRT? StringC...VPrintfW внутри себя также вызывает ее. В итоге все сходится к __stdio_common_vsnwprintf из ucrtbase.dll. Не хочется заново подключать весь мусор из CRT к проекту из-за одной функции. подробнее

Показать сообщение отдельно
Fulcrum_013
609 / 694 / 72
Регистрация: 14.12.2014
Сообщений: 5,414
Завершенные тесты: 3
29.08.2016, 19:51     Передача указателя на функцию-член
Цитата Сообщение от hoggy Посмотреть сообщение
понятия "функция-член объекта" на плюсах не существует
Поэтому и приходится наворачивать костыли для реализации делегата. Хотя разница лишь в добавлении к указателю на метод указателя на объект

Добавлено через 3 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
он несет бред.
То вы бред несете. Если коммитет проглядел стандартизацию назревших 20 лет вещей это не значит что их не существует или в них не существует необходимости.

Добавлено через 14 минут
Цитата Сообщение от Inversus Посмотреть сообщение
полагаю что мне нужно передавать именно функцию-член объекта.
если нужно передовать указатель на член объекта то обычно делают так чтобы во всех компиляторах работало:
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
typedef RetType (*HandlerProc)(Args);
class B:public BaseClass{
      public: 
             RetType Handler(Args){std::cout << "Delegate called"};
}
class A{
private:
      std::function<HandlerProc> Handler;
public:
       void SetHandler(std::function<HandlerProc> NewHandler){
                          Handler=NewHandler;
       };
       void Process(){
              //там где надо вызвать хандлер   
              if (Handler!=nullptr) Handler(Args);
              
       }
}
void main(){
       A a;
       B b;
       // инициализация делегата
      a.SetHandler([b](Args)->RetType{return b.Handler(Args;)});
      a.Process(); 
}
в общем с таким костылем через std::function и лямбду получается очень многословная и неудобная инициализация делегата.

Добавлено через 14 минут
Такая конструкция нужна когда A ничего не знает о B и/или может иметь несколько хандлеров в каждом из которых пользуются разные экземпляры B
 
Текущее время: 10:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru