diff --git a/Function.hpp b/Function.hpp index f062472..4327e44 100644 --- a/Function.hpp +++ b/Function.hpp @@ -10,6 +10,8 @@ private: { public: virtual Ret call(Args...) = 0; + virtual ~callable_base() {} + //virtual ~callable_base() = default; // melyik számít szebbnek? van bármi különbség? }; template @@ -19,8 +21,11 @@ private: Fun _fun; public: callable(Fun fun):_fun(fun) {} - virtual Ret call(Args... args) + + virtual Ret call(Args... args) override { return _fun(std::forward(args)...); } + + virtual ~callable() override {} }; callable_base* _fun; @@ -37,5 +42,8 @@ public: Ret operator()(Args... args) const { return _fun->call(std::forward(args)...); } + operator bool() const + { return static_cast(_fun); } + ~Function() { delete _fun; } }; \ No newline at end of file