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 des contructeurs.


Sujet :

C++

  1. #1
    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 Surcharge des contructeurs.
    Bonjour,
    Dans wxWidget, je trouve la définition suivante:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    class WXDLLIMPEXP_GL wxGLCanvas: public wxWindow
    {
    public:
        // This ctor is identical to the next, except for the fact that it
        // doesn't create an implicit wxGLContext.
        // The attribList parameter has been moved to avoid overload clashes.
        wxGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY,
            int* attribList = 0,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxString& name = wxGLCanvasName,
            const wxPalette& palette = wxNullPalette);
     
        wxGLCanvas(wxWindow *parent, wxWindowID id = wxID_ANY,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize, long style = 0,
            const wxString& name = wxGLCanvasName, int *attribList = 0,
            const wxPalette& palette = wxNullPalette);
     
        wxGLCanvas(wxWindow *parent,
            const wxGLContext *shared,
            wxWindowID id = wxID_ANY,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = 0,
            const wxString& name = wxGLCanvasName,
            int *attribList = (int *) NULL,
            const wxPalette& palette = wxNullPalette);
     
        wxGLCanvas(wxWindow *parent,
            const wxGLCanvas *shared,
            wxWindowID id = wxID_ANY,
            const wxPoint& pos = wxDefaultPosition,
            const wxSize& size = wxDefaultSize,
            long style = 0,
            const wxString& name = wxGLCanvasName,
            int *attribList = 0,
            const wxPalette& palette = wxNullPalette);
     
    blablabla...
    Si je fait un new wxGLCanvas(parent), quel constructeur est appelé? On écarte le 3 et le 4 car le nombre d'arguments n'est pas bon. Par contre entre le 1 et le 2, puisque tous les autres arguments ont des valeurs par défauts, les deux peuvent s'appliquer. Lequel est choisi? C'est dans la norme ou laissé à la discrétion du compilo?
    L'essai montre que le premier est appelé et cette déclaration dans wxWidget me ferait penser que c'est dans la norme. Mais, j'ai un peu googoliser et je n'ai rien trouvé en ce sens. Avez-vous des infos?
    Merci.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Moi mon compilo me sort une erreur d'appel ambigü, d'ailleurs je ne vois pas ce qu'il pourrait faire d'autre.

    Il faut donc aller au moins jusqu'au 3ème paramètre dans ton cas. Pas terrible tout ça.

  3. #3
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Pareil. Le compilateur ne peut pas décider quel constructeur il va appeler. Il ne va pas en choisir un au hasard il émet une erreur disant qu'il y a plusieurs constructeurs qui satisfont l'appel <il donne la liste>.

  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
    Bonjour,
    Donc effectivement, ce serait plutôt une définition un peu bancale de wxWidget. Si on est obligé d'aller jusqu'au troisième paramètre pour distinguer les constructeurs alors ça veut dire que les valeurs par défaut sont inopérantes, donc inutiles.
    Merci.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Si on est obligé d'aller jusqu'au troisième paramètre pour distinguer les constructeurs alors ça veut dire que les valeurs par défaut sont inopérantes, donc inutiles.
    Inutiles pour le compilateur, pas pour l'utilisateur.

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Sylvain Togni Voir le message
    Inutiles pour le compilateur, pas pour l'utilisateur.
    Tu entends par là que c'est à considérer comme une sorte de commentaire ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Oui, d'autant plus que les signatures des fonctions sont reprises telles quelles dans la doc, alors les valeurs par défaut sont importantes.

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Oui c'est ça. Ca me rappelle mes quelques utilisations de wxWidgets... Le truc c'est que avec ce genre de prototypes t'es obligé de connaître les valeurs par défaut à mettre pour pouvoir aller au 127ème argument qui change entre 2 prototypes Avec la doc sous les yeux c'est simplissime mais bon...

  9. #9
    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 Sylvain Togni Voir le message
    Oui, d'autant plus que les signatures des fonctions sont reprises telles quelles dans la doc, alors les valeurs par défaut sont importantes.
    Ca aboutit à ne pas documenter la fonction car on pré-suppose que tout est dit dans la signature... Bof.

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

Discussions similaires

  1. Variables polyvalentes et surcharge des opérateurs
    Par Antoine_935 dans le forum C++
    Réponses: 14
    Dernier message: 08/09/2006, 12h38
  2. surcharges des serveurs sql server 2k
    Par Bba_M dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/06/2006, 08h57
  3. surcharge des operateurs de flux
    Par icer dans le forum C++
    Réponses: 6
    Dernier message: 22/02/2006, 09h02
  4. [MFC] Surcharger des fonctions de CView
    Par Philippe320 dans le forum MFC
    Réponses: 2
    Dernier message: 22/11/2005, 21h24
  5. Réponses: 2
    Dernier message: 15/11/2005, 10h59

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