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

 C++ Discussion :

classe template utilisation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 294
    Par défaut classe template utilisation
    Bonjour,

    Comment utilise-t-on, dans le main, cette classe template ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    template <class R, class RR>
    class P2 {
     
    public:
    R x, y;
    P2 (R a, R b): x(a), x(b)  {}
    P2<R,RR> operator+(const P2<R,RR> & cc) const
    {return P2<R,RR>(x+cc.x,y+cc.y) ;}
     
    };

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Bonjour

    Une fois la typo corrigée dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    P2<int, int> a(0, 1);
    P2<int, int> b(1, 0);
    P2<int, int> c = a + b;
     
    std::cout << "a = " << a.x << " " << a.y << std::endl;
    std::cout << "b = " << b.x << " " << b.y << std::endl;
    std::cout << "c = " << c.x << " " << c.y << std::endl;
    Par contre ce code est à bannir. Il faut rendre ce code plus propre. Tu peux t'inspirer ce cette classe vector2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    /// Container for 2 values
    template <class T>
    class vector2
    {
    public:
     
    	/// x
    	T x;
     
    	/// y
    	T y;
     
    	/**
             * @brief Constructor
             * @param[in] x x
             * @param[in] y y
             */
    	explicit vector2<T>(T const & x=T(), T const & y=T()) : x(x), y(y) { }
     
    	/**
             * @brief Equality operator
             * @param[in] v A vector2
             * @return true if vector2 have same values, false otherwise
             */
    	bool operator==(vector2 const & v) const { return (x == v.x && y == v.y); }
     
    	/**
             * @brief Inequality operator
             * @param[in] v A vector2
             * @return true if vector2 have different values, false otherwise
             */
    	bool operator!=(vector2 const & v) const { return (! ((*this) == v)); }
     
    };
     
    /**
     * @brief Display a vector2
     *
     * @param[in,out] o Out stream
     * @param[in]     c A vector2
     *
     * @return the out stream
     */
    template <class T>
    std::ostream & operator << (std::ostream & o, vector2<T> const & v)
    {
    	o << "{" << v.x << ", " << v.y << "}";
    	return o;
    }

  3. #3
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    les deux sont aussi terribles. template alias + std::array please

  4. #4
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Pourquoi pas
    Le .x et .y sont sympas. Et on veut pas forcément redéfinir les opérateurs pour std::array<T, 2> (?)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/02/2013, 08h40
  2. Réponses: 12
    Dernier message: 29/10/2008, 08h40
  3. Réponses: 4
    Dernier message: 25/10/2007, 17h18
  4. Réponses: 4
    Dernier message: 08/11/2005, 15h10
  5. Réponses: 6
    Dernier message: 06/10/2004, 12h59

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