It sounds like this isn't the whole story. GoTo
will be abstract if there is any pure virtual function without implementation somewhere up the hierarchy.
In C++11, you can ensure that Execute
is properly implemented using the override
keyword:
virtual ActionStatus Execute() override;
This will cause a specific diagnostic if you accidentally declare a new virtual function instead of an override.
You can specify that GoTo
is not the base of anything using final
, which may cause the compiler to complain if it is abstract (but this may not be required):
class GoTo final : public Action
In any case, the compiler should tell you what function was not implemented to help you track down this kind of bug.