昨天我問了以下question,轉載這裏爲了方便;如何在C++中模擬遞歸類型定義?
「對於我的項目,我真正想要做的就是這一點(它簡化到最低限度)之一;
struct Move
{
int src;
int dst;
};
struct MoveTree
{
Move move;
std::vector<MoveTree> variation;
};
我必須承認,我認爲這是不可能做到這個直接的,我認爲MoveTree中的MoveTree矢量將是過時的,但我仍然嘗試了它,它運行得非常漂亮,我使用的是Microsoft Visual Studio 2010 Express。我有什麼可擔心的嗎?「
基本上來自社區的答案是否定的,我無法做到這一點,標準禁止它,所以它的工作原理意味着我只是幸運。
所以我的新問題是。我如何在合法的C++中實現我想要的簡單功能,而不會增加一堆令人討厭的複雜性和痛苦?
你也可以使用[recursive_wrapper](http://www.boost.org/doc/libs/1_46_0/doc/html/boost/recursive_wrapper.html),如果和'vector'一起使用,效率很低,由於高堆流量。 –
你爲什麼要刪除@Johannes的答案?這是一種不同於@Cat Plus Plus的方法,它具有一些優點和缺點:優點是您可以提供對矢量的引用並保持用戶代碼基本不變,缺點是對矢量增長的處理成本更高。 –
@David,因爲我覺得recursive_wrapper在這裏不太好用.- –