Хорошо, на этот раз я решил составить список с использованием STL.Мне нужно создать выделенный сокет TCP для каждого клиента.Поэтому каждый раз, когда у меня есть соединение, я создаю экземпляр сокета и добавляю указатель на него в списке.
list<MyTcp*> SocketList; //This is the list of pointers to sockets
list<MyTcp*>::iterator it; //An iterator to the list of pointers to TCP sockets.
Поместить новый указатель на сокет было легко, но теперь каждый раз, когда соединение заканчиваетсяследует отсоединить сокет и удалить указатель, чтобы не было большой утечки памяти, верно?хорошо .. Я думал, что все в порядке, установив это:
it=SocketList.begin();
while( it != SocketList.end() ){
if((*it)->getClientId() == id){
pSocket = it; // <-------------- compiler complains at this line
SocketList.remove(pSocket);
pSocket->Disconnect();
delete pSocket;
break;
}
}
Но компилятор говорит это:
error: invalid cast from type ‘std::_List_iterator<MyTcp*>’ to type ‘MyTcp*’
Может кто-нибудь помочь мне здесь?я думал, что все делал правильно, разве итератор в любой момент времени просто указывает на один из элементов набора?как я могу это исправить?