C++でstaticなメンバ関数でstaticなメンバの関数ポインタに
所属するクラス以外の関数のポインタを代入して呼び出せるようにしたいんですけど、
どうすればできますか。

#include <stdio.h>
class A {
static void (*fp)();
public:
static void reg(void (*p)()) { fp = p; }
void call() { fp(); }
};
void (A::*fp)();

void func()
{
printf("abcd");
}

int main()
{
A::reg(func);
A a;
a.call();
return 0;
}
とやってみたのですが、リンクするとこでつまずきます。