As I understand it, taking the address of a class method may or may not actually point to the address of the function. It could, instead, point to...something else, I assume =).
Read the C++ FAQ Lite, it explains much better than I.
Click here for the best warning label.
EDIT: Also, I noticed that in your original example you're trying to use the __cdecl calling convention -- if this was in C, that would be closer to the "correct" solution, though, as above, it may or may not point to what you actually want. In C, methods and function pointers are different because of calling convention; in C++, they're different because of the way they're represented (having a really hard time expressing this, considering I don't fully understand it).