Можно ли добиться в C ++ поведения, аналогичного событиям с пользовательскими аргументами в C#?
Я наткнулся на следующую ссылку:
https://www.tangiblesoftwaresolutions.com/articles/cplus_equivalent_to_csharp_events.html
Может ли эта идея быть применена к ситуации, когда используются пользовательские аргументы событий?
Ниже приведен пример кода C#, который должен быть имитирован или реализован в C ++. Для контекста это часть приложения (WinForms), использующего шаблон архитектуры MVC.
// part of service layer of Model
// the View is subscribed to this class
public static class ModelService
{
// methods for using data access layer to interact with database...
// event for getting all customers
public static event EventHandler<GetAllCustomersEventArgs> OnGetAllCustomers = delegate { };
// custom event args
public class GetAllCustomersEventArgs : EventArgs
{
private List<Customer> customerList;
// ctor
public GetAllCustomersEventArgs(List<Customer> customerList)
{
this.customerList = customerList;
}
public List<Customer> getList()
{
return this.customerList;
}
}
}
// part of View
// subscribed to Model
public partial class ViewCustomersForm : Form
{
public ViewCustomersForm
{
// subscribe to the required Model events
CustomerOps.OnGetAllCustomers += new EventHandler<GetAllCustomersEventArgs>(customerEventHandler);
}
private void customerEventHandler(object sender, GetAllCustomersEventArgs e)
{
populateView(e.getList());
}
}
Идея состоит в том, чтобы реализовать это в будущем в приложении WxWidgets.
I понимать, что в C ++ указатели на функции эквивалентны использованию делегатов в C#. Тем не менее, я не знаком с концепцией указателей на функции и ищу некоторые рекомендации о том, как их использовать в контексте того, что желательно достичь, как описано выше, возможно, с некоторым примером кода.