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 vecteur : affectation de ses elements et surcharge de l'operateur =


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut classe vecteur : affectation de ses elements et surcharge de l'operateur =
    bonjour,

    Je suis en train d'ecrire une classe vecteur (ayant pour membre la taille et un pointeur sur des double), et je desire initialiser chacun de ses elements avec la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Vecteur v(5);  // un vecteur de 5 elements
    v = 1.2, 2.5, 0.2, 3.0, 4.8;  // definition de chacun de ses 5 elements
    Je desire savoir si c'est possible, et si oui, comment.

    Je ne suis pas contre un syntaxe du style v(1.2, 2.5, 0.2, 3.0, 4.8) pour faire la meme chose, mais j'aime bien la premiere

    merci

  2. #2
    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
    C'est possible, il faut surcharger l'opérateur ',' mais c'est pas pour un débutant, donc ça dépendra de ton niveau !

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par d'Oursse
    bonjour,

    Je suis en train d'ecrire une classe vecteur (ayant pour membre la taille et un pointeur sur des double), et je desire initialiser chacun de ses elements avec la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Vecteur v(5);  // un vecteur de 5 elements
    v = 1.2, 2.5, 0.2, 3.0, 4.8;  // definition de chacun de ses 5 elements
    Je desire savoir si c'est possible, et si oui, comment.
    C'est possible. Il faut se rendre compte que c'est parsé comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((((v= 1.2), 2.5), 0.2), 3.0), 4.8;
    donc on surcharge l'opérateur = en faisant en sorte qu'il retourne un proxy et on surcharge l'opérateur, du type proxy pour que ça fonctionne. Je ne peux pas dire que je conseille.

    Je ne suis pas contre un syntaxe du style v(1.2, 2.5, 0.2, 3.0, 4.8) pour faire la meme chose, mais j'aime bien la premiere
    Surcharger l'opérateur () avec une interface variadique. C'est un peu piègeux à l'utilisation (il faut que le nombre d'arguments soit bon, et qu'ils soient du bon type).

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    j'ai ecrit ceci :

    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
     
     
      Vector& operator= (double val)
        {
          data_[0] = val;
          return *this;
        }
     
      Vector& operator, (double val)
        {
          static int i = 1;
     
          data_[i++] = val;
     
          return *this;
        }
    apparemment, ca marche . Y a-t-il mieux, comme code pour faire ceci (a part ajouter des exceptions lorsque qu'il y a trop d'elements fournis) ? La variable statique me gene, mais je ne vois pas comment je pourrais faire autrement

    merci

  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
    En utilisant un proxy et pas le vecteur directement, mais comme tu n'as pas l'air de maîtriser le C++, ne passe pas par cette solution.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    je veux bien apprendre Y aurait-il un petit lien vers ce qu'est un proxi ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Citation Envoyé par d'Oursse
    j'ai ecrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
      Vector& operator, (double val)
        {
          static int i = 1;
    
          data_[i++] = val;
    
          return *this;
        }


    Outre le fait que c'est une horreur, tu n'as pas dû beaucoup tester : i ne vaudra 1 qu'une seule fois ... donc ça ne marchera qu'une seule fois !

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    damned, avec 2 vecteurs, c'est vrai. Mais ca peut s'arranger.

Discussions similaires

  1. Réponses: 18
    Dernier message: 03/12/2010, 16h37
  2. Parcourir un fichier XML et retourner ses elements
    Par Ya7yaKech dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/02/2009, 00h41
  3. classe matrice et classe vecteur
    Par yucef83 dans le forum C++
    Réponses: 4
    Dernier message: 20/05/2008, 12h01
  4. Réponses: 4
    Dernier message: 23/04/2006, 10h36
  5. Réponses: 6
    Dernier message: 28/09/2005, 11h30

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