Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Передача указателя на член-функцию

11K
06 июля 2005 года
Horus
1 / / 06.07.2005
Имеются два класса.

Код:
typedef void (*e_handler)(int,int);//указатель на функцию

class cl1
{
    public:
    void Expand(int, int);
};

class cl2
{
    protected:
    e_handler p_hand;//указатель на функцию
    public:
    void AddHandler(int event_id, cl1* subitem);
    void Expand(int,int);
};

void cl2::AddHandler(int event_id, cl1* subitem)
{
//     здесь нужно передать указателю p_hand
//     1. адрес член-функции Expand класса cl2, т.е this->Expand
//       делаю так:
      p_hand=Expand //или p_hand=this->Expand

//     2. адрес член-функции subitem->Expand;      
//  делаю так:
      p_hand=subitem->Expand

    . . . . .
}


При попытке компиляции компилятор выдает ошибку. Полную формулировку не помню,
но смысл в том, что e_handler - это указатель на одиночную функцию.
А мне нужно передать указатель на член-функцию указателю на одиночную функцию.
Это два разных типа указателей.
И компилятор такую операцию присваивания не принимает и как раз и указывает в
формулировке ошибки, что мол типы функций разные и указатели у них разные.
Компилятор g++. Версию не помню, но он в дистрибе ASP Linux 10.
2
06 июля 2005 года
squirL
5.6K / / 13.08.2003
ну к UNIX программированию вопрос относиться постольку, поскольку... поэтому переезжаем.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог