Делегаты на C++

Шаргин Александр

Введение

Делегаты - это объектно-ориентированные указатели на функции, используемые для callback-вызовов в среде CLR фирмы Microsoft. Делегат можно связать со статической функцией или с нестатическим методом любого класса (единственное условие - совпадение сигнатуры метода с сигнатурой, указанной в описании делегата). Затем связанную с делегатом функцию или метод можно вызывать, используя стандартный синтаксис вызова функции в C++. Несколько делегатов можно связать в цепочку. Благодаря этому можно "одним махом" вызвать все связанные с ними callback-функции. Следующий пример демонстрирует применение делегатов в языке C#.

using System;

using System.IO;

namespace CSharpDelegates {

Частное решение

Для начала создадим делегат для callback-вызова функций и методов с простейшей сигнатурой

void(void)

. Интерфейс этого делегата будет выглядеть так.

class IDelegateVoid {

public:

 virtual ~IDelegateVoid() {}

 virtual void Invoke() = 0;