The problem is at line 53. The compiler doesn't like the function call.
Error C2171 '*': illegal on operands of type 'bool (__cdecl Parser::* )(const std::string &)' 53
Error C2064 term does not evaluate to a function taking 1 arguments 53
Line 53 should be: if (! (this->*fp)(str)) // Do the sub parse
You need a special operator ->* or .* to call a pointer to member. The arrow-star needs an pointer-to-object on its left side and a pointer-to-member on the right. The "extra" parentheses are required.