我想要两个指向彼此的结构。具体来说,我想要以下内容:
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 来做到这一点,但我正在尝试以正确的方式做事 :)
谢谢!