我有個問題。在以下示例中,命名空間中有一個名為private_b類的靜態私有成員變數。然后我試圖從 class 訪問該變數,我已經宣告它是一個of class ,但它不起作用,來自 GCC 的編譯錯誤:AaBfriendA
錯誤:“B* a::A::private_b”在此背景關系中是私有的
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
}
};
我不明白為什么我無法訪問它,以及如何解決這個問題。我真的希望類A位于該命名空間內,而類位于該命名空間內B是沒有意義的。我在互聯網上搜索了這個,但找不到這個確切的案例,或者找不到這個案例的解決方案。
uj5u.com熱心網友回復:
friend class B;B在同一個命名空間中宣告的友誼a。你可能想要friend class ::B;.
注意,friend class B;不是指全域前向宣告,它在關鍵字之后class B有自己的前向宣告。class Bfriend
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/438344.html
