Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатель на функцию в качестве параметра, Контейнер 
:(
    Опции темы
Rost
Дата 23.12.2004, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



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 *)'

Весь вечер бьюсь, ошибки не вижу ((
PM MAIL   Вверх
Mad
Дата 24.12.2004, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



Цитата(Rost @ 23.12.2004, 20:38)
(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))

Ты передаеш не указатель, а результат выполнения функции.

Код

(pDoc->m_spisok).Each((pDoc->m_figure)->Draw, m_dc);

void CSpisok::Each(void(CElement::*f)(CClientDC* pDC), CClientDC *pDC)
{
   f(pDC);
}





--------------------
user posted image
PM MAIL   Вверх
Rost
Дата 24.12.2004, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2004

Репутация: нет
Всего: нет



Mad

К сожалению это тоже работать не будет, т.к. Draw - компонентная функция, а указатель на компонентую функцию явно передать нельзя(.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0397 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.