如何解决未在命名空间中声明和定义的命名空间类的朋友
这样做正确吗?
void f();
namespace ns
{
class C
{
int m;
friend void ::f();
};
}
void f()
{
ns::C c;
c.m = 2;
}
?
该代码已在VS中成功编译。但是我找不到有关在标准中为朋友声明限定名称空间的任何信息。合法吗?有人可以提供标准的链接或报价吗?
解决方法
是的,合法的。
namespace
仅仅是为函数,类等添加另一层描述的方法。
即使friend
与该函数位于不同的class
中,也可以在class
内将任何函数标记为namespace
。该函数也可以位于namespace
中。
标准中没有关于此的特定部分,但这是标准的必然结果。此参考是一个起点:https://en.cppreference.com/w/cpp/language/namespace
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。