How have you used them? because it works OK for me. The following code compiles and runs with MSVS.

Code:
#include <iostream>
using namespace std;

class MyClass
{
	typedef void(MyClass::*memFnPtr) ();

public:
	MyClass(memFnPtr funcptr)
		: fnptr(funcptr) {}

	MyClass()
		: fnptr(&MyClass::fn1) {}

	memFnPtr fnptr;
	void fn1();
	void fn2();
};

void MyClass::fn1()
{
	// Function 1 called!
	cout << "func1" << endl;
}

void MyClass::fn2()
{
	// Function 2 called!
	cout << "func2" << endl;
}

int main() {
MyClass	mc1(&MyClass::fn1),
	mc2(&MyClass::fn2),
	mc3;

	(mc1.*(mc1.fnptr))();  // Call function 1 from class mc1
	(mc1.*(mc2.fnptr))();  // Call function 2 from class mc1

	(mc2.*(mc1.fnptr))();  // Call function 1 from class mc2
	(mc2.*(mc2.fnptr))();  // Call function 2 from class mc2

	(mc1.*(&MyClass::fn1))();  // Call function 1 from class mc1
	(mc1.*(&MyClass::fn2))();  // Call function 2 from class mc1

	(mc1.*(mc3.fnptr))();  // Call function 1 from class mc1
	(mc2.*(mc3.fnptr))();  // Call function 1 from class mc2
	(mc3.*(mc3.fnptr))();  // Call function 1 from class mc3
	(mc3.*(&MyClass::fn2))();  // Call function 2 from class mc3

	return 0;
}