C++ 如何使在某个命名空间中声明的类成为全局范围中定义的其他类的朋友
我希望类A::B是C的朋友。命名空间D中还有另一个同名的类。 我怎样才能做到这一点。在实际的层次结构中,不同的类可能位于不同的头中C++ 如何使在某个命名空间中声明的类成为全局范围中定义的其他类的朋友,c++,c++17,C++,C++17,我希望类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 {
#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;
}
#包括
#包括
使用名称空间std;
C类
{
朋友类别A::B;
};
名称空间A
{
B类
{
};
}
名称空间D
{
B类
{
};
}
int main()
{
您是否需要在类C
之前转发声明类B
(在正确的命名空间中):
namespace A {
class B;
}
我看不出有什么问题。在命名空间A
之后定义C
应该行得通。谢谢。我的前向声明不正确,比如“class A::B”