Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#8

Re: Events as Properties in C++

  Alt 30. Okt 2005, 11:04
Zitat von sniper_w:
Und was die Methoden zeiger angeht, die Methoden, auf die man zeigt, dürfen leider nicht member functions sein sodern in global scope definiert sein. Oder ?
Üblicherweise ja. Aber du kannst dir einen eigenen functor basteln:
Code:
template <class ClassType, typename ReturnType, typename Parameter1>
class functor_1
{
  public:
    // declare functor
    typedef ReturnType (ClassType::*Callback)(Parameter1);

    // setup functor
    functor_1(ClassType *some_object, Callback some_method)
      this->_object = some_object;
      this->_callback = some_method;
    };

    // call functor
    ReturnType
    operator()(Parameter1 param1)
    {
      return (_object->*_callback)(param1);
    }

  private
    ClassType *_object;
    Callback _callback;
}
Ist zwar ungetestet, sollte aber funktionieren. Verwenden tut man ein derartiges Template wie folgt:
Code:
ClassA a;
ClassB b;

functor_1<ClassA, int, int> *functor;

int
ClassB::emit_event()
{
  return functor(3);
}

int
ClassA::some_method(int i)
{
  std::cout << i;
  return ++i;
}

int
main()
{
  functor = new functor_1<ClassA, int, int>(&a, &ClassA::some_method);
  int blubb = b.emit_event();
}
  Mit Zitat antworten Zitat