2010-12-26 2 views
2

Этого код компилируется (как я бы ожидать):__stdcall ЬурейеГо г ++ проблема

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 (*)()' 

Я использую g ++ 3.4.2 под Vista (я знаю, он древний, но у меня сейчас нет доступа к какой-либо другой среде). Очевидно, что я что-то упустил. Любая помощь будет оценена по достоинству.

+0

Что вы пытаетесь достичь. В C ot обычно используется адрес функции. в C++ очень редко требуется адрес функции или метода. –

ответ

7

Синтаксис: void(__stdcall *)(), а не void __stdcall (*)().

+0

Это был простой ответ. Спасибо! – jhh