Benutzerdefinierte Ereignisse in C ++?

8

Ist es möglich, benutzerdefinierte Ereignisse in C ++ zu erstellen? Angenommen, ich besitze die Variable X und die Variable Y. Wenn sich X ändert, möchte ich eine Funktion ausführen, die Y gleich 3X setzt. Gibt es eine Möglichkeit, einen solchen Trigger / Event zu erstellen? (Trigger sind in einigen Datenbanken üblich)

    
Adam 16.09.2008, 22:34
quelle

5 Antworten

10

Dies ist im Grunde eine Instanz des Observer-Musters (wie andere erwähnt und verlinkt haben). Sie können jedoch Vorlagenmagie verwenden, um sie etwas syntaktischer palettierbar zu machen. Betrachten Sie etwas wie ...

%Vor%

Dann kannst du schreiben ...

%Vor%

Welche Methode Sie verwenden, um Ihre Beobachter-Callback-Funktionen zu schreiben, liegt ganz bei Ihnen; Ich empfehle Ссылка Funktions- oder Funktionsmodule (Sie können auch einfache Funktoren verwenden). Ich warne Sie auch davor, bei dieser Art der Überlastung des Bedieners vorsichtig zu sein. Während es bestimmte Codierungsstile klarer machen kann, verwenden Sie rücksichtslos etwas wie

scheintLikeAnIntToMe = 10;

eine sehr teure Operation, die gut explodieren könnte, und Albträume für die kommenden Jahre zu debuggen.

    
Adam Wright 16.09.2008 22:52
quelle
3

Boost-Signale ist eine weitere häufig verwendete Bibliothek, zu der Sie vielleicht stoßen könnten Beobachtermuster (aka Publish-Subscribe). Käufer aufgepasst, ich habe gehört, seine Leistung ist schrecklich.

    
Doug T. 17.09.2008 01:13
quelle
1

Benutze das Beobachter-Muster

Codeprojektbeispiel

Wiki-Seite

    
slf 16.09.2008 22:37
quelle
1

Denken Sie, Sie sollten etwas über Design Patterns lesen, insbesondere die Observer Pattern .

Qt von Trolltech haben eine nette Lösung implementiert, die sie Signale und Slots .

    
epatel 16.09.2008 22:36
quelle
0

Soweit mir bekannt ist, können Sie das nicht mit Standardvariablen tun. Wenn Sie jedoch eine Klasse geschrieben haben, die eine Callback-Funktion verwendet, können Sie andere Klassen registrieren lassen, um über Änderungen informiert zu werden.

    
Denice 16.09.2008 22:38
quelle

Tags und Links