| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Передать в класс указатель на функцию |
| Автор: marcusmae 5.10.2007, 11:21 | ||||
| Всем привет. Почитал похожие темы и мало-что понял, поэтому решил всё-таки спросить. У меня есть класс, в который я должен передавать указатель на некую функцию-обработчик :
Шаблон T определяет тип данных, а с помощью шаблона класса A я стал выкручиваться из ошибки, связанной с тем, что передаваемый указатель на функцию (являющуюся членом другого класса) имеет соглашение __thiscall :
Правильно ли так действовать? = Или можно как-то обойтись без шаблона A? Научите, пожалуйста, как это нормально делают. |
| Автор: archimed7592 5.10.2007, 14:28 | ||
А не проще ли написать
Можно. См. http://boost.org/libs/function/index.html. |
| Автор: marcusmae 5.10.2007, 16:40 | ||||
| [quote=archimed7592, 5.10.2007, 14:28, post1277470] А не проще ли написать
[quote] Тогда на
говорит, что term does not evaluate to a function taking 2 arguments. |
| Автор: marcusmae 5.10.2007, 17:22 | ||
да-да, там должен стоять valueInitializer, и это не работает, тк проблему thiscall мне решить не удаётся В примере дайте, пожалуйста, хоть на код классов посмотреть... Сам пытался вот по http://www.newty.de/fpt/index.html научиться. Блин, всего-то надо передать указатель на функцию-член другого класса, хранить его и запускать функцию по её указателю. Вот в C# бросил тип делегата в качестве аргумента, и всё работает. В плюсах же такое впечатление, что для этого надо лбом об стенку разбиться. |
| Автор: archimed7592 5.10.2007, 19:08 | ||||||
|
| Автор: marcusmae 7.10.2007, 23:29 | ||||
Вчера всё внимательно посмотрел и понял, что мне не хватает одного : ссылки на экземпляр класса, в котором живёт функция-обработчик, передаваемая по указателю. И ещё привелся к __cdecl :
Соответственно, использующие сие классы стали свои функции тоже держать в __cdecl и передавать ссылку на себя в конструктор :
И это работает. archimed7592, спасибо за Ваши примеры |