我有一個類有一個靜態指針指向另一個類,它是一個單例。我似乎得到的問題是,我不能從所述類的構造函數中設置指針。這是我現在的代碼:在另一個類中定義靜態類指針
class B;
class A
{
public:
A();
~A();
};
class B
{
public:
B();
~B();
static A* a;
};
A::A() {
A* B::a = this;
}
現在,我似乎得到的問題是,我不能在「當前範圍」中定義B :: a。另外,「this」指針只能用於「非靜態成員函數」中。
我認爲問題與在另一個類函數中定義靜態類變量有關,但我不確定。
所以你想要一個靜態成員,可以在實例化類之前使用,直到另一個類被實例化時才能被定義。 – chris
你在問什麼?我不確定你的意思。 – user1703993
既然'B :: a'是公共的(除了是靜態的),你可以在'A'的構造函數中做'B :: a = this;'。但效果是1)'B :: a'不會被初始化,直到創建'A'的第一個實例,並且2)每次創建一個新的'A'實例,'B :: a '會改變。你確定這是你想要的嗎?這聽起來非常不尋常。 – jogojapan