gpt4 book ai didi

c++ - 即使声明为全局,全局友元函数也无法访问私有(private)范围

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:34 26 4
gpt4 key购买 nike

我敢肯定这是我忽略的一件很容易的事情,但我对这个错误消息感到很恼火。我很少使用友元函数。

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 编译。

最佳答案

I don't quite understand this error message, it is defined as belonging to global scope, is it not?!

它不是,除非您在 friend 声明之前在全局 namespace 中包含前向声明。如果 friend 声明引入了一个新符号,那么该符号位于包含它的 class 的封闭 namespace 中。

尝试添加

LRESULT CALLBACK Window_Proc(HWND, UINT, WPARAM, LPARAM);

在全局命名空间中,在声明您的之前。

关于c++ - 即使声明为全局,全局友元函数也无法访问私有(private)范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com