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 :

Operator= dans une classe template de vecteur


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Operator= dans une classe template de vecteur
    Bonsoir,

    Je dois faire la surcharge de l’opérateur = pour une classe vecteur.

    J'aimerai en faisant : vecteur 1 = vecteur 2; mettre tout ce que j'ai dans vecteur 2 dans le vecteur 1.

    Les vecteurs sont déclaré comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur<Carte> *vecteur1, *vecteur2;
    j'ai tenter de faire ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    template <class T> Vecteur& Vecteur<T>::operator=( const Vecteur& vec)
    	{
    		int i;
    		while (i < nbreElem)
    		{
    			setElement(i, vec.getElement(i));
    		}
    		return *this;
    	}
    Mais il me met une error à ce niveau-ci

    template <class T> Vecteur& Vecteur<T>::operator=( const Vecteur& vec)

    L'erreur est :


    ./Classes/Vecteur.cxx:146: error: expected constructor, destructor, or type conversion before '&' token
    ./Classes/Vecteur.cxx:146: error: expected `;' before '&' token


    Désolé de ne pas être clair. Sauriez-vous m'aider?

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    L'utilisation du paramètre template est obligatoire dans le type retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template <class T> Vecteur<T>& Vecteur<T>::operator=( const Vecteur& vec)
    [edit] : l'utilisation de pointeur Vecteur<Carte> *vecteur1, *vecteur2; et le besoin de définir l'opérateur d'affectation me fait lever un sourcil.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Je vais un peu expliquer ce que je dois faire.

    Je dois faire un programme qui gère des collections de carte. Exemple, les cartes de Disney. Et je dois gérer les personnes qui conçoit les albums de collections. Un album est composé de cartes.

    Donc,
    Je dois faire une classe Album qui a un nom et un vecteur de carte.

    Dans la partie privée de la carte, j'ai mis :
    char * nom;
    Vecteur<Carte>* vec;


    Et j'avais des soucis parce que quand je créait un album, j'utilisais un AlBum TmpAlbum et puis je le renvoyais pour pouvoir faire d'autre fonction.

    Le problème c'était que le TmpAlbum supprimer le pointeur du vecteur et donc les autres fonctions fonctionnait moins bien.

    La solution, c'était d'allouer un espace mémoire pour recopier le vecteur.

    Désolé si je ne suis pas très clair, j'ai un peu de mal à m'exprimer.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Voldeviejnd Voir le message
    char * nom;
    Vecteur<Carte>* vec;
    Les chaînes de caractères : std::string.
    Les vecteurs : std::vector.


    Citation Envoyé par Voldeviejnd Voir le message
    Et j'avais des soucis parce que quand je créait un album, j'utilisais un AlBum TmpAlbum et puis je le renvoyais pour pouvoir faire d'autre fonction.

    Le problème c'était que le TmpAlbum supprimer le pointeur du vecteur et donc les autres fonctions fonctionnait moins bien.

    La solution, c'était d'allouer un espace mémoire pour recopier le vecteur.

    Désolé si je ne suis pas très clair, j'ai un peu de mal à m'exprimer.
    Je ne suis pas sur de comprendre ton premier problème, mais à priori Album ressemble à une classe à sémantique d'entité. Par conséquent, elle est probablement non copiable. Connais-tu les références ?

Discussions similaires

  1. Fonction template dans une classe template
    Par mister3957 dans le forum Langage
    Réponses: 9
    Dernier message: 08/07/2008, 13h11
  2. verctor dans une class template
    Par LesLemmings dans le forum Langage
    Réponses: 6
    Dernier message: 10/12/2007, 18h51
  3. Typedefs dans une classe template
    Par olivier1978 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2007, 02h12
  4. typedef dans une class template
    Par yan dans le forum Langage
    Réponses: 2
    Dernier message: 01/10/2007, 11h43
  5. Class interne dans une classe template
    Par MatRem dans le forum Langage
    Réponses: 26
    Dernier message: 15/06/2006, 11h45

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