c++ - 如何使在某个命名空间内声明的类成为全局范围内定义的其他类的朋友
问题描述
我希望 A::B 类成为 C 的朋友。命名空间 D 中有另一个同名的类。我该怎么做。在实际的层次结构中,不同的类可能在不同的标题中。
#include <iostream>
#include <cstdlib>
using namespace std;
class C
{
friend class A::B;
};
namespace A
{
class B
{
};
}
namespace D
{
class B
{
};
}
int main()
{
cout << "Hello, friend!" << endl;
}
解决方案
您需要在B
之前转发声明类(在正确的命名空间中)class C
:
namespace A {
class B;
}
推荐阅读
- django - 将 pytest 参数化与 DRF 测试一起使用
- python - 在 python 或 spark 中获取大数据缺失值的最快方法是什么?
- javascript - 在单个句柄(滑块范围)上触发的 JQuery 滑块事件
- css - Outlook:表格左对齐问题
- php - 授权标头格式错误。(在 ajax 调用和 curl 中)
- tensorflow - 如何在 Tensorflow 中使用 benchmark_model 时将布尔值传递给占位符?
- design-patterns - 这种内容加载技术的名称是什么?
- c++ - 如何在动态创建的 CMFCToolbar 的 ToolTip 中添加描述?
- reactjs - 如果不需要 propType,为什么 ESLint 要为其提供默认 prop?
- docker - docker-compose up -d 后 Docker 容器以代码 0 退出