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 :

surcharge operateur externe symmetrique


Sujet :

C++

  1. #1
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut surcharge operateur externe symmetrique
    Je fais pas souvent de surcharge, alors je me reference aux tutoriaux... et j'écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class Tensor
    {
      ...
      friend Tensor operator*(const double d, const Tensor & T);
      ...
    };
    que je définie dans le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Tensor operator*(const double d, const Tensor & T)
    {
      return( Tensor( T._mat3x3 * d ) );
    }
    Mais le compilo est pas content:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    no match for 'operator*' in '(+(&tFieldSp)->std::vector<_Tp, _Alloc>::operator[] [with _Tp = std::vector<Tensor, std::allocator<Tensor> >, _Alloc = std::allocator<std::vector<Tensor, std::allocator<Tensor> > >](((unsigned int)i)))->std::vector<_Tp, _Alloc>::operator[] [with _Tp = Tensor, _Alloc = std::allocator<Tensor>](((unsigned int)j)) * 3.2'
    Tensor.h:26: note: candidates are: Tensor operator*(double, const Tensor&)
    a l'ecriture de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tFieldSp[i][j] * 3.2;
    ou tField est juste un vector de Tensor (éprouvé et rééprouvé, à ne pas mettre en cause). Forcément si j'inverse et que je met 3.2 de l'autre cote ca marche... mais cela veut il dire que la surcharge d'operateur symetrique est synonyme de surchage de fonction en inversant les parametre (c'est pas cool)?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Il n'y a pas d'autre solution que de définir les deux fonctions. Idéalement, la seconde appelle la première.
    Il n'y a aucun mécanisme en C++ qui implique qu'un opérateur binaire soit commutatif.

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

Discussions similaires

  1. surcharge operateur delete et héritage
    Par Hervé dans le forum C++
    Réponses: 5
    Dernier message: 29/03/2006, 13h59
  2. Surcharge operateur =
    Par rulianf dans le forum C++
    Réponses: 9
    Dernier message: 23/02/2006, 00h32
  3. [debutante] surcharge operateur <<
    Par norkius dans le forum Débuter
    Réponses: 3
    Dernier message: 24/10/2005, 12h20
  4. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51
  5. surcharge operateur && pointeurs
    Par le y@m's dans le forum C++
    Réponses: 6
    Dernier message: 10/05/2005, 15h57

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