|
0 / 0 / 0
Регистрация: 17.07.2008
Сообщений: 6
|
||||||
Передача метода класса в качестве параметра для метода другого класса06.02.2013, 21:31. Показов 2762. Ответов 2
Метки нет (Все метки)
Здравствуйте,
Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна не зная, что за функцию ему передали. Мне ничего лучше в голову не пришло, как создать класс унаследованный от QThread (использую QT, но думаю это не принципиально в данном вопросе), который мог бы получать функцию какого то класса в качестве атрибута и выполнять её в теле run(), выполнение которого он бы уже мог прервать с помощью метода terminate(). Вот какой класс у меня получился:
"error C2664: Stopper::connectRequest: невозможно преобразовать параметр 1 из 'void' в 'void (__cdecl *)(void)' Выражение, имеющее тип void, нельзя преобразовать в другой тип" Насколько я понял изучая эту тему, мне нужно корректно реализовать делегат, но у меня никак не получается это сделать... Прошу помощи. Заранее спасибо
0
|
||||||
| 06.02.2013, 21:31 | |
|
Ответы с готовыми решениями:
2
Передача члена класса в качестве параметра метода [C++, OpenGL, glut] передача метода класса в качестве параметра функции glutDisplayFunc() двумерный массив в качестве параметра метода класса |
|
165 / 164 / 23
Регистрация: 23.02.2011
Сообщений: 347
|
|
| 06.02.2013, 21:50 | |
|
Ты не путай, функцию и метод. Можешь сделать класс, в который тебе нужно это передать шаблонным и передавать в него указатель на экземпляр класса, чей метод нужно вызвать. А вообще, подобные проблемы говорят, об изначально неудачно спроектированной программе. Попробуй найти более простое решение.
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
| 06.02.2013, 21:57 | |
|
если сигнатура известна, то можно пользоваться
std::function boost::function либо же как в классике замутить все с помощью паттерна Command (Команда) - тут чуть больше приседаний придется сделать, но если буста нет и нового стандарта нет - то это наверно лучшая альтернатива.
0
|
|
| 06.02.2013, 21:57 | |
|
Помогаю со студенческими работами здесь
3
Передача enum в качестве аргумента метода класса Передача метода класса в качестве аргумента внешней функции Вызов метода класса из метода другого класса Указатель на метод класса в качестве аргумента метода класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|