Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Передача указателя на переменную в указ. функции


Автор: Proxin 28.5.2014, 15:55
Приветствую.
Есть следующе определение типа классовой функции
Код

typedef  (CPanel::*proc)(...)

Пробую передавать переменную в экземпляр функции, присвоенной следующим образом
Код

void CPanelChild::AssignProc(proc p)
{
 /* myproc определён как
     private:
     proc myproc
*/
   this->myproc = &p
}

таким способом
Код

void CPanelBase::GiveProc(void** panel_to_translate)
{
 CPanelBase** ptr = RetriveChildPanel("PanelChild");
 proc myproc = (*ptr)->getproc();
 (*ptr)->*myproc(panel_to_translate);
}

Проблема в том, что у *panel_to_translate в вышеуказанной функции адрес один, а в функции p, вызываемой в контексте нужной мне панели ptr, адрес *panel_to_translate другой ( проверял выводом в консоль ). Почему так получаетеся? Вроде я разыменовываю указатель как нужно. Всю голову уже себе сломал.

Автор: Proxin 2.6.2014, 21:06
Спасибо всем за помощь. Разобрался. Надо кастовать к прототипу с тем же количеством аргументов, что и в привязанной функуии.

Добавлено через 30 секунд
Спасибо всем за помощь. Разобрался. Надо кастовать к прототипу с тем же количеством аргументов, что и в привязанной функуии.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)