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

SL & STL C++ Discussion :

Surcharge (ou redéfinition) de fonction


Sujet :

SL & STL C++

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 64
    Points
    64
    Par défaut Surcharge (ou redéfinition) de fonction
    Salut c'est encore moi toujours dans mon exploration de la STL
    J'ai tenté de surcharger (un peu au pif) une fonction dans ma classe qui dérive d'une multimap car cette dernière stocke en "value" un pointeur sur une zone mémoire allouée dynamiquement.
    Voici comment je m'y suis pris (vous avez le droit de le rire mais discrètement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    size_type CLayersMMap::erase(const key_type& p_rKey)
    {
      CLayersMMap::iterator Iterator;
      for (Iterator = this->find(p_rKey); Iterator != this->end(); Iterator = this->find(p_rKey))
        delete Iterator->second;
      multimap<string, CLED*>::erase(p_rKey);
    }
    Du côté de la définition de classe, dans le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class CLayersMMap : public std::multimap<std::string, CLED*>
    {
      //plein de choses
     
    public:
     virtual size_type erase(const key_type&);
      //plein de choses
    };
    Apparement c'est presque ça, j'ai juste une erreur "Erreur de syntaxe de déclaration" sur size_type CLayersMMap::erase(const key_type& p_rKey).

    Voilà vous savez tout, à vos neurones, prêt, répondez =P

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 279
    Points : 11 015
    Points
    11 015
    Par défaut
    Je crains que tu aies manqué un énorme détail ... les containers de la SL ne ont pas faits pour être sous-typés. Rien n'est virtuel.

    Tout ce que tu pourras faire, c'est masquer les fonctions de la classes dont tu hérites ... dans les classes filles. Au mieux, tu les réinjectes avec un using afin d'obtenir une surcharge.

    Et sans "virtual", il n'y a pas de redéfinition possible.

    Quant à ton erreur de compilation, à tous les coup -> s/size_type/CLayersMap::&/
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2005
    Messages : 65
    Points : 64
    Points
    64
    Par défaut
    Merci pour ton explication, j'ai donc suivi ton conseil et j'ai réinjecté la fonction du container derrière un return et mon erreur de compilation a disparu avec un "CLayersMMap::" devant le type de retour.
    Merci beaucoup :)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/09/2006, 00h47
  2. API HOOK, Dump dll, Surcharge de Fonction
    Par MicroAlexx dans le forum Windows
    Réponses: 2
    Dernier message: 30/12/2005, 10h39
  3. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  4. singleton, polymorphisme, et surcharge de fonction
    Par legend666 dans le forum C++
    Réponses: 11
    Dernier message: 14/11/2005, 09h27
  5. Surcharge de fonction d'un edit dynamique
    Par Tartar Ukid dans le forum C++Builder
    Réponses: 4
    Dernier message: 13/10/2003, 11h56

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