我想有兩個結構指向彼此。具體來說,我想有以下幾點:C++相互模板依賴?
template<typename Key, typename Value>
class MyStructure {
public:
typedef map<Key, list<pair<Value, typename ListType::iterator>>> MapType;
typedef list<typename MapType::element_type::iterator> ListType;
private:
MapType map_;
ListType list_;
}
顯然這不起作用,因爲以前沒有將ListType聲明爲類型。我怎麼能這樣做?正如你所看到的,我使用迭代器類型作爲指向這兩個結構元素的指針。
我正在考慮使用奇怪的循環模板模式,但無法獲得任何地方。有人在## C++也建議使用模板別名,但也失敗了(至少,我不知道如何使用這個想法)。
我從概念上做錯了什麼?或者「也許不符合C++概念」?我當然可以用void * s來做到這一點,但我試圖讓事情成爲正確的方式:)
謝謝!
那個數據結構對我來說是無稽之談。我的意思是在大多數情況下已經比使用'list'更無意義了。 (你實際上試圖用這個數據結構來完成什麼?) – 2012-03-08 07:59:54
這是一個[重複](http://stackoverflow.com/q/9595420/777186)? – jogojapan 2012-03-08 08:05:28
我想要一個地圖,給定一個鍵,有一個值列表。這些值在列表中也有表示,我將其用於其他目的。目的是能夠以插入順序迭代所有地圖的元素,而不是本地地圖存儲它們的順序。 編輯:比利:我做了一個小小的改變,也許結構現在更有意義了?現在,ListType元素指向的是地圖中某個列表中的元素。 – 2012-03-08 08:11:29