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

Visual C++ Discussion :

parametre de CList<TYPE,ARG_TYPE>


Sujet :

Visual C++

  1. #1
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    180
    D�tails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Par d�faut parametre de CList<TYPE,ARG_TYPE>
    Salut
    pour ce qui est de la classe CList pour ne prendre que celle-ci

    la MSDN dit
    TYPE
    Type of object stored in the list.
    ARG_TYPE
    Type used to reference objects stored in the list. Can be a reference
    .

    a quoi peut bien service ARG_TYPE ???

    merci

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par d�faut
    Le ARG_TYPE, en r�gle g�n�rale, sert � sp�cifier comment les objets ou litt�raux doivent �tre utilis�s. Cela vaut pour les CList comme pour les autres template.
    Si on prend un exemple, tu cr�es un template TOTO sans ARG_TYPE :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template <class TYPE>
    class TOTO
    {
    public :
        explicit TOTO(){};
        virtual ~TOTO(){};
        void Set (TYPE t){m_obj = t;};
        TYPE Get (){return m_obj};
    private :
        TYPE m_obj;
    };
    Ensuite, si tu d�clares un TOTO de CString :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
            TOTO<CString> montotodestring;
            CString machaine = TEXT("coin");
            montotodestring.Set (machaine);
            CString val;
            val = montotodestring.Get ();
    C'est tr�s moyen car lors du Set (), le prog sera oblig� de faire appel au constructeur de recopie car nous n'avons pas de r�f�rence � machaine.

    Alors, on aurait pu faire la classe TOTO comme cela :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template <class TYPE>
    class TOTO
    {
    public :
        explicit TOTO(){};
        virtual ~TOTO(){};
        void Set (TYPE& t){m_obj = t;};
        TYPE& Get (){return m_obj};
    private :
        TYPE m_obj;
    };
    On travaillerait avec des r�f�rences d'objet, ce qui est quand-m�me beaucoup plus optimal et moins d�voreur d'espace m�moire.
    Par contre, si tu souhaites ensuite travailler avec un TOTO<int>, renvoyer une r�f�rence d'un int (ou bool, ou long ou ...), �a fait un peu lourd et l� on a donc l'effet inverse : travailler avec des r�f�rences de litt�raux est beaucoup plus couteux que de travailler avec des litt�raux eux-m�me.

    On trouve donc en g�n�ral dans les templatele ARG_TYPE qui permet de sp�cifier � celui qui l'utilise q'il veut travailler avec des r�f�rences, des r�f�rences constantes ou avec le type lui-m�me.

    Si on revient dans l'exemple du CList, mieux vaut faire un CList<CString, CString&> ; par contre, mieux vaut avoir un CList<bool, bool>

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

Discussions similaires

  1. R�ponses: 4
    Dernier message: 15/07/2011, 13h04
  2. [COM] Definir un parametre de fonction de type char
    Par kacedda dans le forum Visual C++
    R�ponses: 13
    Dernier message: 16/04/2008, 13h10
  3. recuperer le type du parametre (void*)
    Par kacedda dans le forum C
    R�ponses: 15
    Dernier message: 01/02/2006, 09h44
  4. Type complexe en parametre dans une procedure stock�e
    Par Tsimplice dans le forum Oracle
    R�ponses: 2
    Dernier message: 06/10/2005, 02h42
  5. [Debutant(e)][Conception] Fonction avec type de paramètre variable
    Par rabobsky dans le forum G�n�ral Java
    R�ponses: 9
    Dernier message: 22/07/2005, 16h10

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