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

Discussion :

Incompréhension concernant un constructeur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut Incompréhension concernant un constructeur
    Bonsoir a tous,
    je fais appelle a vous car je n'arrive pas a comprendre constructeur par defaut que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent)
    {
        setupUi(this); // on initialise le formulaire
        QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
        lineEdit->setValidator(new QRegExpValidator(regExp, this));
        connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
    }
    le constructeur par defaut appelle tout d'abord le constructeur QDialog.
    Ce que je ne comprend pas c'est son parametre. Je n'arrive pas a comprendre pourquoi on lui en donne 1 (sachant que parent vaut 0). Pour essayer de voir une difference j'ai executer mon code avec et sans ce constructeur et il n'y a eu aucune difference (visuellement) j'aimerai donc savoir ce qu'il se passe lorsque à l'interieur du programme lorsqu'on l'execute avec et sans QDialog.

    Voila et merci d'avance pour vos reponses.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    Malheureusement, il y a une grande différence.
    Certes, avec Qt, il n'y a pas de problème si on enlève la liste d'initialisation (tout ce qui suit le ':'). Pourquoi ?
    Parce que, en C++, par défaut, le constructeur de la classe mère sera appelé mais avec aucun argument (bah oui, par défaut, un compilateur ne devine pas les arguments que l'on veut passer).

    Alors oui, vous pouvez dire, que de toute façon, vous ne passez jamais de parent ... donc autant enlevé le paramètre .... mais pour deux choses ce serai une erreur:
    • Dans la philosophie on passe un parent qui permet la hiérarchie des éléments
    • Si vous enlevé l'appel explicite du constructeur ... un jour ... vous allez oublier qu'il existe


    Je pourrais aussi dire, que dans une optique d'évolution, il faut toujours donné un parent. Cela semble logique dans la philosophie Qt et empêcher une telle chose serait comme un mal
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut
    je te remercie LittleWhite pour ton aide.
    J'ai compris la majorité de ton explication.
    Toutefois il me reste quelque taches a éclaircir :
    - je n'arrive toujours pas a voir l'utilité de lui passé un parent comme parametre a QWidget, oui c'est dans la philosophie Qt et sa permet la hierarchie des élements (par contre je n'ai pas compris cette phrase) mais si on le le fait pas, si on appelle explicitement le constructeur par defaut de QWidget (donc sans parametre) quelles en seront les conséquences par rapport au fait d'en mettre ?
    - Cela signifie t'il que l'on devra donné obligatoirement à tout les constructeurs situé dans les listes d'initialisations le parametre parent ?

    voila, merci

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Dans le cas: sans paramètre:

    Si vous ne mettez pas l'appel au constructeur parant, ce n'est absolument pas grave car c'est le compilateur qui le fait. Personnellement, je préfère tout géré explicitement, cela m'évite des erreurs / oublis / incompréhension

    - Cela signifie t'il que l'on devra donné obligatoirement à tout les constructeurs situé dans les listes d'initialisations le parametre parent ?
    Non ... juste à ce qui en ont besoin (généralement, juste la classe parente) (sinon je n'ai pas compris la question)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut
    Citation Envoyé par momo-ben2A Voir le message
    je te remercie LittleWhite pour ton aide.
    J'ai compris la majorité de ton explication.
    Toutefois il me reste quelque taches a éclaircir :
    - je n'arrive toujours pas a voir l'utilité de lui passé un parent comme parametre a QWidget, oui c'est dans la philosophie Qt et sa permet la hierarchie des élements (par contre je n'ai pas compris cette phrase) mais si on le le fait pas, si on appelle explicitement le constructeur par defaut de QWidget (donc sans parametre) quelles en seront les conséquences par rapport au fait d'en mettre ?
    - Cela signifie t'il que l'on devra donné obligatoirement à tout les constructeurs situé dans les listes d'initialisations le parametre parent ?

    voila, merci
    j'ai compris c'est pour connaitre l'objet qui contiendra l'objet gotocelldialog. Autrement dit connaitre le parent de celui-ci.
    sa permet de mettre cette objet dans un autre objet.

    C'est bien sa ?

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 136
    Billets dans le blog
    150
    Par défaut
    Oui ... connaitre le parent permet entre autre de mettre un objet dans une autre fenêtre
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut
    merci a toi

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

Discussions similaires

  1. [OpenGL 4.x] Incompréhension concernant le tesselation stage
    Par Kraane dans le forum OpenGL
    Réponses: 0
    Dernier message: 31/07/2014, 16h07
  2. Petite incompréhension concernant les destructeurs
    Par Francky44003 dans le forum Débuter
    Réponses: 7
    Dernier message: 11/02/2011, 16h57
  3. Réponses: 1
    Dernier message: 06/01/2011, 16h29
  4. Réponses: 1
    Dernier message: 27/07/2009, 09h20
  5. J'ai besoin d'aide concernant un bug incompréhensible
    Par Kicker dans le forum GTK+ avec C & C++
    Réponses: 22
    Dernier message: 23/05/2008, 13h27

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