Можно ли реализовать события в C ++?

Я хотел реализовать событие C # в C ++, просто чтобы посмотреть, Я мог это сделать. Я застрял, я знаю, что нижняя часть неправильная, но я понимаю, что моя самая большая проблема ...

Как мне перегрузить оператор () , чтобы он был тем, что находится в T , в данном случае int func (float) ? Я не могу? Могу я? Могу ли я реализовать хорошую альтернативу?

#include <deque>
using namespace std;

typedef int(*MyFunc)(float);

template<class T>
class MyEvent
{
    deque<T> ls;
public:
    MyEvent& operator +=(T t)
    {
        ls.push_back(t);
        return *this;
    }
};
static int test(float f){return (int)f; }
int main(){
    MyEvent<MyFunc> e;
    e += test;
}
14
задан Null 4 September 2015 в 15:02
поделиться