Java и C# отличаются в своих методах обработки событий. В Java вы пишете интерфейсы или классы, которые может вызывать ваша программа. В C# это делается по-разному с помощью событий и делегатов.Исходя из Java, C#, если у C++ нет обработки событий, как можно поймать, когда что-то произойдет?
Есть ли у C++ какая-либо форма обработки событий?
Мое понимание в Java события, как это делается:
class Class1
{
private ArrayList<MyEventListener> listeners;
//Class stuff
public void doEvent() {for(MyEventListener e : listeners) {e.eventHappened(args);}
public void addToListeners(MyEventListener eventListener) {listeners.add(eventListener);
public void removeFromListeners(MyEventListener eventListener) {listeners.add(eventListener);
public interface MyEventListener
{
void eventHappend (Anything passable);
}
}
Я полагаю, C++ это можно сделать вывести так
Define new Class
{
Define Array (Java ArrayList/List) of the abstract class or interface below
//Define other unrelated class stuff
Define add to listeners function
Define remove from listeners function
Define inner interface (maybe a C++ abstract class would work instead as interfaces don't exist in C++) to act as event
Define function in inner abstract event class to be the actual part of the code that represents the event
Define call all listeners function
}
ли это смысл? Я честно не вижу, как можно программировать что-либо без системы прослушивания/обработчика событий, я полагаю, что я близок.
Как вы имели дело с событиями, пришедшими с другого языка?
Посмотрите на шаблоны проектирования. –
Это зависит от вашего определения «иметь правильную обработку событий». – juanchopanza
C++ как язык вообще не имеет представления о событиях. – SergeyA