Bonjour,

Je souhaite pouvoir parcourir un conteneur list avec une boucle basée sur des intervalles.

Voici un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
std::list<std::unique_ptr<sf::TcpSocket>> clientList;
clientList.emplace_back(make_unique<sf::TcpSocket>(client));
 
for(std::unique_ptr<sf::TcpSocket>& i : clientList)
   {
       std::cout << "Content list socket :" << i->getRemoteAddress() << std::endl;
   }
A partir de ce code, le compilo me dit que j'utilise une fonction supprimée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: use of deleted function 'sf::TcpSocket::TcpSocket(const sf::TcpSocket&)'
Bien évidemment si j'essais ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::cout << "Content list socket :" << i.getRemoteAddress() << std::endl;
Le compilo me retourne l'erreur que "class std::unique_ptr<sf::TcpSocket>" n'a pas de méthode "getRemoteAddress()"

Je sais bien que je ne peux pas copier un pointeur unique_ptr mais il me semble que justement dans ma boucle, je ne fais aucune copie dans "i". Pourquoi la fonction est-elle supprimé/mon objet détruit ? je dois avouer que je ne comprends pas trop.

Et dans ce cas précis, comment afficher en console ce que je demande dans ma boucle ? Est-ce possible avec une boucle basée sur des intervalles ?

Merci par avance pour vos réponses.