我确信这是一件非常容易让我忽略的事情,但是我正在撕掉这条错误信息。我很少使用朋友的功能。
error: 'LRESULT Window_Proc(HWND, UINT, WPARAM, LPARAM)' should have been declared inside '::'
这是我的定义:
namespace rayc
{
class win32_window: public window {
public:
win32_window();
~win32_window();
void show();
void hide();
void pump_message();
private:
friend LRESULT CALLBACK ::Window_Proc(HWND, UINT, WPARAM, LPARAM);
void set_closed(bool);
HWND hWin;
};
}
我不太明白这个错误信息,它被定义为属于全局范围,不是吗?!
使用MinGW-64 TDM进行编译。
答案 0 :(得分:3)
我不太明白这个错误信息,它被定义为属于全局范围,不是吗?!
除非您在friend
声明之前在全局名称空间中包含前向声明,否则不是。如果friend
声明引入了新符号,则此符号位于包含它的类的封闭名称空间。
尝试添加
LRESULT CALLBACK Window_Proc(HWND, UINT, WPARAM, LPARAM);
在全局命名空间中,在声明类之前。