У вас все в порядке только с предварительным объявлением класса:
#ifndef _TEST_
#define _TEST_
class MyClass;
typedef double (MyClass::*MemFuncGetter)();
#endif
Но обратите внимание, что, не включая весь класс, компилятору приходится выполнять дополнительную работу для обработки случаев, когда MyClass представляет собой беспорядок с множественным виртуальным наследованием, поскольку он не знает. В некоторых случаях это может означать, что каждый указатель функции на самом деле занимает до 20 байт памяти. Принимая во внимание, что если бы вы определили целое, каждый указатель на функцию занял бы только 4. (Конечно, все размеры зависят от компилятора).