相关疑难解决方法(0)

不是c ++中的迭代器是一种指针吗?

好的这次我决定使用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.
Run Code Online (Sandbox Code Playgroud)

将一个新指针放到套接字很容易,但是现在每次连接结束时我应该断开套接字并删除指针,这样我就不会有大量的内存泄漏,对吧?好吧..我以为我做得好这个:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但编译器这样说:

 error: invalid cast from type ‘std::_List_iterator<MyTcp*>’ to type ‘MyTcp*’
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?我以为我做的事情是对的,在任何给定的时间只是指向集合中的一个元素不是迭代器?我该怎么解决?

c++ pointers iterator list

5
推荐指数
2
解决办法
6818
查看次数

标签 统计

c++ ×1

iterator ×1

list ×1

pointers ×1