Russian Qt Forum
Ноябрь 23, 2024, 03:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Объявление указателя на метод класса  (Прочитано 4485 раз)
west
Гость
« : Март 14, 2006, 18:38 »

Можно ли объявить указатель на метод класса и передать его, указатель, как параметр функции другого класса? Если да, то как?
У меня получается вот что:
// CLASS1
void Class1::pFunction()
{
    ///////////
}

void Class1::prostoFunction()
{
    pClass2->addFunction(&Class1::pFunction)
}

//CLASS 2
void Class2::addFunction(void(Class1::*funct)())
{

}

До этого места компилиться, когда пытаюсь в Class2 вызвать funct, то дело не идет, идут ошибки, типа не правильно инициализирую функцию, не могу привести указатель к типу и т.д. Как вызвать функцию через указатель в Class2?
Записан
Sergeich
Гость
« Ответ #1 : Март 14, 2006, 19:24 »

Код:
#include <iostream>
using namespace std;

class Iface {
public:
  void stop() { cout << "Stop" << endl; }
  void run() { cout << "Run" << endl; }
  void resume() { cout << "Resume" << endl; }
  void suspend() { cout << "Suspend" << endl; }
};

typedef void ( Iface::*Operation ) ();

class Worker
{
public:
  Worker( Iface* i ) : iface(i) {}
  void doIt( Operation op ) { (iface->*op) (); }
private:
  Iface* iface;
};

void main()
{
  Iface* i = new Iface();
  Worker w( i );
  w.doIt( &Iface::run );
  w.doIt( &Iface::stop );
  Operation op = &Iface::resume;
  w.doIt( op );
  delete i;
}
Записан
west
Гость
« Ответ #2 : Март 14, 2006, 19:40 »

Понял, спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.206 секунд. Запросов: 20.