| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Указатель на функцию в качестве параметра |
| Автор: Rost 23.12.2004, 21:38 |
| CRedaktorDoc* pDoc=GetDocument(); CClientDC dc(this); CClientDC* m_dc; m_dc=&dc; (pDoc->m_spisok).Each((pDoc->m_figure)->Draw(m_dc)); Переменные m_spisok и m_figure описаны в CDocument типами CSpisok и CFigure*. Исходное описание в классе: void CSpisok::Each(void(CElement::*f)(CClientDC* pDC)) CFigure - абстрактный класс, наследуется от CElement, в нём Draw - чистая функция, переопредяляется в наследуемых классах. Выдаётся единственная ошибка: D:\Program Files\Microsoft Visual Studio\MyProjects\Redaktor\RedaktorView.cpp(125) : error C2664: 'Each' : cannot convert parameter 1 from 'void' to 'void (__thiscall CElement::*)(class CClientDC *)' Весь вечер бьюсь, ошибки не вижу (( |
| Автор: Mad 24.12.2004, 13:34 | ||||
Ты передаеш не указатель, а результат выполнения функции.
|
| Автор: Rost 24.12.2004, 21:29 |
| Mad К сожалению это тоже работать не будет, т.к. Draw - компонентная функция, а указатель на компонентую функцию явно передать нельзя(. |