このコードは(私が期待するように)コンパイルされます:
typedef void __stdcall (*Func)();
struct A {
static void __stdcall f() { }
};
int main() {
Func p = A::f;
}
しかし、これは:
struct A {
typedef void __stdcall (*Func)();
static void __stdcall f() { }
};
int main() {
A::Func p = A::f;
}
あまり役に立たないエラーメッセージで失敗します:
error: invalid conversion from `void (*)()' to `void (*)()'
Vistaでg++3.4.2を使用しています(古いですが、現在、他の環境にアクセスできません)。明らかに、私はここで何かが欠けています。どんな助けでもいただければ幸いです。