The base class should be abstract, not the derived class. It should look something like this:



class base
{
public:
virtual ~base() = default;

virtual void Move() = 0;