2017-01-20 67 views
-2

我希望定義一個指向同一元素類型的元素,像這樣:定義一個指向同一元素的元素類型在C++

#define Foo { Foo*, ..., ... } 

例如,這可以幫助我創建一個簡單的樹不會造成任何附配類:

#define TreeNode std::deque(std::pair(char, TreeNode*)) 

TreeNode mRootNode; 

然而,這不能做,因爲做在其聲明中對自身的引用時Foo是不是還聲明。

我的問題是......爲什麼在類中實現它時允許使用相同的功能?有沒有更簡單的方法,而不是面向對象,來定義我的Foo

+5

您不想這樣做,或幾乎任何其他。在C++中使用預處理器宏。 –

+5

第一步,不要使用宏。 – RyanP

+0

#define創建一個宏,而不是一個類型。如果你試圖擴展這個宏,如圖所示,你會得到一個無限的自遞歸。 – zstewart

回答

2

定義一個指向相同元件的元件鍵入C++

一種簡單的方式來定義一個類型,可以指的是相同類型的另一個目的是定義像這樣的數據結構:

struct Foo { 
    Foo* link; 
}; 

不需要宏。

這是允許的,因爲Foo已經聲明成員指針時聲明。語言規則允許遞歸類,但不允許遞歸預處理器宏。


P.S.爲了澄清這個問題中的一些混淆:雖然C++中的類支持面向對象的功能,但您可以選擇不使用這些功能,而是像使用C中的結構一樣使用類。

相關問題