IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

[C++][std::list] Reinterpret cast


Sujet :

SL & STL C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par d�faut [C++][std::list] Reinterpret cast
    SAlut a tous,

    J'ai une petite question concernant les listes.
    J'ai ma liste liste dasn laquelle je veux mettre des objet inconnus
    je cr� donc ma liste comme �a :

    Ensuite, je met des choses dans ma liste.


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    list.push_front((void*)(unTruc) )
    list.push_front((void*)(unAutreTruc) )
    list.push_front((void*)(EncoreUnTruc) )
    Ensuite je veux depiler mes "trucs", comment savoir qu'est ce que j'ai en sortie ??? j'ai des void* masi comment savoir si c'est unTruc ou unAutreTruc ??

    Le reinterpret cast pourrait'il m'aider, je cast le void* en unTruc masi si en fait c'est unAutreTruc commen �a se passe ??

    En gros ma question est comment faire pour mettre n'importe quoi dans une liste (le void* �a doit marcher) et surtout comment sortir les choses de la liste en les "castant" correctement. Je sais pas si je suis claire :s

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Ah mon dieu, vade retro!
    Tu sabordes l'une des plus belles choses du C++ : les conteneurs g�n�riques typ�s.
    Repense ton design pour ne plus (jamais) utiliser void*. Le C++ t'en donne les moyens.
    Quel est le type de tes objets ? Ils n'ont aucun rapport ? Pourquoi les mettre ensembles alors ?
    Une solution c'est un objet racine parent qui permet de d�terminer le type de l'enfant, mais pourquoi as-tu besoin d'une telle chose ?

  3. #3
    Membre chevronn� Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par d�faut
    J'ai eu trop peur en voyant std::list<void*>
    Ca m�rite

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par d�faut lol
    Je sais bien �a moi ausii �a me pique les yeux de voir �a
    Je fait du dev sur un smartphone et j'utilise la WTl pour mes boites de dialogue
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    class CDialogContactSelection : public CDialogImpl <CDialogContactSelection>
    Donc le type generique pour ma liste �a srait CDialogImp<> mais comme c'est une classe template pas moyen de faire une liste
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::list<CDialogImpl <>>
    il faut bien un type dans le template ? (arretez moi si je me trompre)
    Donc oui evidament un conteneur typ� avec la classe de base c'est achement mieux. Mais la j'ai pas de classe de base, j'ai un template de base :s resultat ma liste ne peut pas avoir un ype "generique"

    L'idee de cette chose est de pouvoir navigu� de fenetre ne fenetre sans contraintes. Exemple j'ai plusieurs dialogue du meme template masi c'est pas la meme classe.

    dlg1, dlg2, dlg3, dlg4 donc 4 classes differentes, sur le telephone le fonctionnemnt classique c'est tu ouvre de dlg1 � dlg4 et si tu ferme dlg4 tu retombe sur dlg3 et ainsi de suite.
    Moi je veyux pouvoir passer de dlg4 � dlg1 en fermant au passage toutes les fentre netre 4 et 1.

    L'idee est donc d'avoir un manager g�rant les fenetres, d'ou la necessit� d'avoir une liste de fenteres ouvertes, deux solution :
    1- Le manager garde les HWND de chaque fentre avec le rang d'apparition et ensuite on envoi des messages aux fenetres. Bien masi pas top le manager devient vite lourd...

    2 -On maintient un tableau de reference sur les fentres d'ou le tableau de pointeur void* et le comportement des fentres est g�r� par les fenetres elles meme


    La solution 1 est largement faisable, la liste ne connait que un seul type pas de probleme.

    Pour la solution 2, il faut une liste avec une classe de base, impossible dasn notre cas, � moins que les templates pas completement defini puisse passer :s. Ou alors une technique qui se raproche "detypage" des objet pour les ranger et ensuite les resortir

    Alors , voil� le pourquoi de cette horeur

  5. #5
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Citation Envoy� par Aurelien.Regat-Barrel
    Ah mon dieu, vade retro!
    Tu sabordes l'une des plus belles choses du C++ : les conteneurs g�n�riques typ�s.
    Repense ton design pour ne plus (jamais) utiliser void*. Le C++ t'en donne les moyens.
    Quel est le type de tes objets ? Ils n'ont aucun rapport ? Pourquoi les mettre ensembles alors ?
    Une solution c'est un objet racine parent qui permet de d�terminer le type de l'enfant, mais pourquoi as-tu besoin d'une telle chose ?
    +1
    Il y a sans doute au moins 1 point commun � tous ces objects, non ?

  6. #6
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    CDialogImpl accepte en 2� param�tre template la classe de base � utiliser, qui est par d�faut CWindow.
    Donc tous des dialog sont des CWindow. Ca tombe bien, un gestionnaire de fen�tre g�re des... fen�tre

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Par d�faut Nickel :D
    Je doit dire :
    TROP TOP !!!
    Merci bein pour cette fabuleuse nouvelle
    Merci encore

  8. #8
    Membre chevronn� Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par d�faut
    Ben voila, un coup de
    et c'est gagn� !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [cast] dans le cas d'une Std::list
    Par ZaaN dans le forum SL & STL
    R�ponses: 9
    Dernier message: 26/10/2006, 10h07
  2. [dev-C++]std::list<tree_node<T>*> iterator;
    Par jmv dans le forum Dev-C++
    R�ponses: 7
    Dernier message: 06/05/2005, 13h14
  3. acceder au n i�me element d'une liste std::list
    Par sorari dans le forum SL & STL
    R�ponses: 4
    Dernier message: 23/03/2005, 15h21
  4. [std::list][find_if] probl�me avec mes foncteurs
    Par n!co dans le forum SL & STL
    R�ponses: 12
    Dernier message: 04/02/2005, 11h56
  5. traduction en delphi "reinterpreted cast"
    Par Chupakabra dans le forum Langage
    R�ponses: 3
    Dernier message: 13/02/2003, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo