我試圖創建一個成員(類A的道具)到類(B)。類A的成員「prop」需要獲取在其構造函數中傳遞的新創建的B實例的「this」指針。正如下面的代碼段(代碼段1)所示。類成員在實例初始化時需要這個指針
但是,這在編譯時失敗,並顯示錯誤消息: 「A typespecifier was expected」(德語翻譯)。
我認爲這是關於我不能在這種情況下使用這個指針,但我不想去Snippet 2的方式,並使用一個指針。這對我來說並不實際。
有什麼辦法可以完成這個接近第一個代碼片段的編碼風格嗎?
片段1
class B;
class A
{
public:
A(B* b)
{
// ...
};
};
class B
{
public:
A prop(this);
};
片段2
class B;
class A
{
public:
A(B* b)
{
// ...
};
};
class B
{
public:
B()
{
this->prop = new A(this);
}
A* prop;
};
編輯:只是想出了這個片段,但在一個類別,它具有很多的時候使得它真正不可讀。
片段3
class B;
class A
{
public:
A(B* b)
{
// ...
};
};
class B
{
public:
B() : prop(this) {};
A prop;
};
非常感謝!
Sebastian
我發現了一個包含C++ 11代碼的解決方案,但對於非C++ 11代碼,您是絕對正確的!謝謝。 –