[C++]Transformer un objet en un autre objet qui en hérite

Transformer un objet en un autre objet qui en hérite [C++] - C#/.NET managed - Programmation

Marsh Posté le 24-01-2005 à 10:46:18    

(le sujet est ptet pas clair :o)
Voila mon problème: j'utilise un tcpListener qui fait un AcceptTcpClient, méthode qui renvoit un pointeur vers un TcpClient. Ce que j'aimerais, c'est transformer ce truc pour pouvoir utiliser ce TcpClient au sein de ma classe CClient qui hérite de TcpClient. Je sais pas si c'est possible, c'est probablement une grosse connerie, mais ça m'arrangerait vachement. Quelqu'un peut-il m'éclairer ?

Code :
  1. while ( !quitter && (nbClient<MAX_CLIENTS) )//verif du nombre max de clients
  2. {
  3.  TcpClient *client = this->AcceptTcpClient();//methode bloquante
  4.  nbClient++;//maj du nombre de clients connectés
  5.  //TODO: initialisation d'un CClient a partir du TcpClient
  6.  //TODO: creation et lancement d'un thread dédié au client
  7. }


 

Code :
  1. __gc class CClient : public TcpClient
  2. {
  3. //blablabla...
  4. };


---------------
©2008 Bleuarff Corp.
Reply

Marsh Posté le 24-01-2005 à 10:46:18   

Reply

Marsh Posté le 24-01-2005 à 13:09:37    

pour moi, ton TcpClient est crée par AcceptTcpClient(), donc non.
 
tu pourrais tenter de construire par recopie un CClient à partir d'un TcpClient, mais c'est pas sûr que ce soit sain.
 
il serait plus simple (et logique pour moi en tous cas) de maintenir le TcpClient crée par AcceptTcpClient, via un TcpClient * dans ton CClient. (voir idéalement un auto_ptr<> ou autre)
 
ie ton object CClient maintient l'état & infos de la communication "Application" avec ton client, et maintient aussi la connection en elle-même. (TcpClient)
 
non, me gourje ?


Message édité par bjone le 24-01-2005 à 13:10:23
Reply

Marsh Posté le 24-01-2005 à 16:33:34    

Ouaip, vu que j'ai pas la moindre idée sur comment faire le constructeur par recopie, j'ai enlevé l'héritage et mis un TcpClient en variable membre. Yavait pas grand chose d'autre à modifier dans le code, et ça semble marcher :bounce: .


---------------
©2008 Bleuarff Corp.
Reply

Marsh Posté le 24-01-2005 à 16:38:01    

oki, vérifies la logique de la vie du TcpClient* par rapport à la destruction/recopie/assignement, et t'auras un truc blindar

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed