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