お互いを指す 2 つの構造が必要です。具体的には、次のことを実現したいと考えています。
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 は以前に型として宣言されていないため、明らかにこれは機能しません。どうすればこれを行うことができますか? ご覧のとおり、イテレータ型をこれら 2 つの構造体の要素へのポインタとして使用しています。
奇妙に繰り返されるテンプレート パターンを使用することを考えていましたが、それではどこにも行きませんでした。##c++ の誰かもテンプレート エイリアスの使用を提案しましたが、それも失敗しました (少なくとも、このアイデアの使用方法はわかりません)。
概念的に何か間違ったことをしていますか? それとも「C++ の概念に沿っていない」のでしょうか? 私は確かに void*s でこれを行うことができましたが、私は物事を正しい方法にしようとしています:)
ありがとう!