Russian Qt Forum

Программирование => С/C++ => Тема начата: west от Март 14, 2006, 18:38



Название: Объявление указателя на метод класса
Отправлено: 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 от Март 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 от Март 14, 2006, 19:40
Понял, спасибо.