AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Events as Properties in C++

Ein Thema von sniper_w · begonnen am 28. Okt 2005 · letzter Beitrag vom 30. Okt 2005
Antwort Antwort
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#1

Events as Properties in C++

  Alt 28. Okt 2005, 23:20
Was ich in C++ vermisse, ist die Möglichkeit Events (im Delphi Sinne) einem Objekt zuzuweisen (als Eigenschaft). Oder habe ich etwas verschlaffen ?

Wie geht man da in c++ vor ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Events as Properties in C++

  Alt 29. Okt 2005, 23:21
**push**
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#3

Re: Events as Properties in C++

  Alt 30. Okt 2005, 00:09
C++ Syntax:

typedef void __fastcall (__closure *TSocketNotifyEvent)(System::TObject* Sender, TCustomWinSocket* Socket);



__property TSocketNotifyEvent OnClientDisconnect = {read=FOnClientDisconnect, write
=FOnClientDisconnect};

Sollte laut Delphihilfe so ähnlich gehen wie in Delphi
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#4

Re: Events as Properties in C++

  Alt 30. Okt 2005, 00:22
Properties sind aber nicht Standard-C++ sondern eine Borland-Erweiterung.
In C++ gibt es keine Properties, wo man einfach instanz.variable=wert macht und es wird automatisch eine get/set-Methode aufgerufen.
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Events as Properties in C++

  Alt 30. Okt 2005, 07:35
@Net7: Das ist aber Borland C++ Dialekt.

Ich meinte eher C++ Standard.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Events as Properties in C++

  Alt 30. Okt 2005, 08:03
Zitat von sniper_w:
Ich meinte eher C++ Standard.
Events sind in C++, wie bei Delphi, einfach Methodenzeiger. Wie das geht, steht in den ersten Codezeilen.
Ohne das Property musst du halt mit Getter- und Setter-Methoden arbeiten. Properties sind da ja nur eine vereinfachende Schreibweise.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Events as Properties in C++

  Alt 30. Okt 2005, 08:49
Danke. Ich habe das schon so gemacht, ich habe nur gehoft dass es halt einfacher geht.

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 ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
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
Antwort Antwort


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 17:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz