Function definition not found if enum parameter isn't a the end

The name you give the parameters doesn’t matter at all to C++ – only the order matters.
Also, when you declare a function as a member of a class in a header, you have to then define it scoped to that class in the C++ file (AYourClass::MyFunc(…))