AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Events as Properties in C++

Ein Thema von sniper_w · begonnen am 28. Okt 2005 · letzter Beitrag vom 30. Okt 2005
 
tommie-lie
(Gast)

n/a Beiträge
 
#8

Re: Events as Properties in C++

  Alt 30. Okt 2005, 10: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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz