'function' : 'specifier' storage-class specifier illegal on function definition
The specifier cannot appear with a function definition outside of a class declaration. The virtual specifier can be specified only on a member function declaration within a class declaration.
Example
struct X { virtual void f(); virtual void g(); }; virtual void X::f() {} // error, virtual specifier void X::g() {} // OK