Russian Qt Forum

Qt => Общие вопросы => Тема начата: time.h от Июнь 30, 2011, 07:03



Название: Проблема с указателем на фукнцию
Отправлено: time.h от Июнь 30, 2011, 07:03
Объявляю класс  Form и в нем объявляю функцию и  указатель на функцию.
Код:
void edit(QString);
void(*pFunc)(QString);
В конструкторе класса пытаюсь установить указатель на функцию
Код:
pFunc=edit;
В результате выдает ошибку :
ошибка: argument of type ‘void (Form:: )(QString)’ does not match ‘void (*)(QString)’
Помогите пожалуйста.


Название: Re: Проблема с указателем на фукнцию
Отправлено: LisandreL от Июнь 30, 2011, 07:12
void(*pFunc)(QString); - сслылка на обычную функцию.
Ссылка на функцию нестатический член класса будет выгдядеть так:
Код
C++ (Qt)
void(Form::*pMemFunc)(QString);
Почему это разные типы? По простому говоря потому, что функция член класса кроме явных параметров получает ещё и this. А раз агрументы разные, то и тип разный.

Читать: http://www.parashift.com/c++-faq/pointers-to-members.html#faq-33.1


Название: Re: Проблема с указателем на фукнцию
Отправлено: time.h от Июнь 30, 2011, 07:26
Огромное спасибо,помогло.Правда пришлось еще присваивание изменить
Код:
pFunc=&Form::edit;
Инфа по ссылке тоже кстати весьма интересная.