Long answer: In C++, member fns have an implicit parameter which points to the object (the "this" ptr inside the member fn). Normal C fns can be thought of as having a different calling convention from member fns, so the types of their ptrs (ptr-to-member-fn vs ptr-to-fn) are different and incompatible. C++ introduces a new type of ptr, called a ptr-to-member, which can be invoked only by providing an object (see ARM ["Annotated Reference Manual"] 5.5).
Note: do not attempt to "cast" a ptr-to-mem-fn into a ptr-to-fn; the result is undefined and probably disastrous. E.g., a ptr-to- member-fn is not required to contain the machine addr of the appropriate fn (see ARM, 8.1.2c, p.158). As was said in the last example, if you have a ptr to a regular C fn, use either a top-level (non-member) fn, or a "static" (class) member fn.