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 d'opératuers et classes abstraites.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut Surcharge d'opératuers et classes abstraites.
    Bonjour,

    J'ai une classe abstraite A dont dérivent des classe B,C,D,E....

    J'aurais envie de surcharger les opérateurs + * - / pour ces classes, mais sans écrire 36 fois la même chose.

    typiquement je sais que le type de sortie de + ou - est toujours B, et * ou / est toujours C, j'ai donc fait un truc dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    C operator *(A N1, 1 N2)
    {
    	return C(&N1,&N2);
    }
    Et là le compilateur me dit que je n'ai pas le droit d'avoir N1 et N2 de type A car A a des fonctions virtuelles pures.

    Alors je suis un peu perplexe, il y a-t-il une solution ?

    Peut-être avec des templates mais je ne suis pas convaincu.

    Si quelqu'un peut me renseigner, je suis preneur.

    Merci
    --
    Z.

  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
    Ta classe A étant abstraite, il est normal que le compilateur renvoie ce message.
    Avec des pointeurs de A en paramètre, ça marchera mieux

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Avec des pointeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C operator *(A* N1, A* N2)
    Il me dit qu'il veut une classe ou un enumerated type

    Donc je ne sais toujours pas...

    --
    Z.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Bon avec A& ça marche, merci.

    --
    Z.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    En même temps... je doute que ta fonction modifie les parametres...
    La signature devrait donc être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C operator * (const A& a1, const A& a2);

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/11/2012, 10h59
  2. [Classe abstraite] Problème de surcharge
    Par Bleys dans le forum Langage
    Réponses: 8
    Dernier message: 26/04/2007, 11h44
  3. Réponses: 6
    Dernier message: 20/03/2007, 10h51
  4. Classe abstraite / MVC
    Par caramel dans le forum MVC
    Réponses: 5
    Dernier message: 01/04/2003, 09h27
  5. pb constructeurs classes dérivant classe abstraite
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2003, 19h02

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