added missing virtual dtor for callable_base. first working version
This commit is contained in:
parent
f85b3ec31f
commit
1ae511542c
10
Function.hpp
10
Function.hpp
@ -10,6 +10,8 @@ private:
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual Ret call(Args...) = 0;
|
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 <typename Fun>
|
template <typename Fun>
|
||||||
@ -19,8 +21,11 @@ private:
|
|||||||
Fun _fun;
|
Fun _fun;
|
||||||
public:
|
public:
|
||||||
callable(Fun fun):_fun(fun) {}
|
callable(Fun fun):_fun(fun) {}
|
||||||
virtual Ret call(Args... args)
|
|
||||||
|
virtual Ret call(Args... args) override
|
||||||
{ return _fun(std::forward<Args>(args)...); }
|
{ return _fun(std::forward<Args>(args)...); }
|
||||||
|
|
||||||
|
virtual ~callable() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
callable_base* _fun;
|
callable_base* _fun;
|
||||||
@ -37,5 +42,8 @@ public:
|
|||||||
Ret operator()(Args... args) const
|
Ret operator()(Args... args) const
|
||||||
{ return _fun->call(std::forward<Args>(args)...); }
|
{ return _fun->call(std::forward<Args>(args)...); }
|
||||||
|
|
||||||
|
operator bool() const
|
||||||
|
{ return static_cast<bool>(_fun); }
|
||||||
|
|
||||||
~Function() { delete _fun; }
|
~Function() { delete _fun; }
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user