У меня есть приложение, в котором есть узлы, которые связаны друг с другом. Каждый узел хранит список входящих и исходящих соединений с другими узлами. Время от времени принимающему узлу необходимо иметь возможность избавиться от одного из своих входящих соединений. Когда это происходит, я хочу, чтобы соединение было удалено не только из списка входящих соединений узла-получателя, но и из списка исходящих соединений узла-отправителя. Но для этого узлу-получателю нужен итератор узла-отправителя для соединения. Было бы неплохо, если бы я мог просто сохранить этот итератор как член объекта подключения. Но попытка сделать это даже не скомпилируется. Когда я пытаюсь объявить итератор как член класса, компилятор говорит мне, что это неопределенный тип. Вот как выглядит мое объявление класса:
class Connection
{
public:
Connection();
~Connection();
Node* pSourceNode;
std::list<Connection*>::iterator SourcesIterator;
};
Есть ли какой-нибудь изящный способ заставить это или что-то подобное работать без необходимости писать свой собственный связанный список? Возможно, какая-то структура данных, которая до сих пор ускользала от меня?