从另一个 class C++ 访问命名空间中的私有静态成员变量
Acces private static member variable in namespace from another class C++
我有问题。在下面的示例中,在命名空间a
中有一个名为private_b
of class A
的静态私有成员变量。然后我试图从 class B
访问该变量,我声明它是 class A
的 friend
,但它没有无法正常工作,GCC 出现编译错误:
error: ‘B* a::A::private_b’ is private within this context
class B;
namespace a {
class A {
private:
static B* private_b;
friend class B;
};
B* A::private_b = nullptr;
}
class B {
public:
void foo() {
B* foo = a::A::private_b; // Error here
}
};
我不明白为什么我无法访问它,以及如何解决这个问题。我真的希望 class A
位于该命名空间内,而 class B
位于该命名空间内没有意义。我在互联网上搜索过这个,但找不到这个确切的案例,或者找不到这个案例的解决方案。
friend class B;
在同一命名空间 a
中与 B
宣布了友谊。你可能想要 friend class ::B;
.
注意,friend class B;
不是指全局前向声明class B
,它在关键字friend
.
之后有自己的前向声明class B
我有问题。在下面的示例中,在命名空间a
中有一个名为private_b
of class A
的静态私有成员变量。然后我试图从 class B
访问该变量,我声明它是 class A
的 friend
,但它没有无法正常工作,GCC 出现编译错误:
error: ‘B* a::A::private_b’ is private within this context
class B;
namespace a {
class A {
private:
static B* private_b;
friend class B;
};
B* A::private_b = nullptr;
}
class B {
public:
void foo() {
B* foo = a::A::private_b; // Error here
}
};
我不明白为什么我无法访问它,以及如何解决这个问题。我真的希望 class A
位于该命名空间内,而 class B
位于该命名空间内没有意义。我在互联网上搜索过这个,但找不到这个确切的案例,或者找不到这个案例的解决方案。
friend class B;
在同一命名空间 a
中与 B
宣布了友谊。你可能想要 friend class ::B;
.
注意,friend class B;
不是指全局前向声明class B
,它在关键字friend
.
class B