Я хотел реализовать событие 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;
}