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 :

Initialisation d'un constructeur dans une autre classe Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut Initialisation d'un constructeur dans une autre classe Qt
    Bonjour cela fait peu de temps que j'ai commencé Qt, j'aimerais dans ma classe MainWindow appeler un constructeur venant de la classe tube, or le problème que je n'arrive pas à l'initialiser...

    En vous remerciant d'avance,
    cdt

    voici mon code :

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "mainwindow.h"
    #include "tube.h"
     
    #include <QApplication>
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    mainwindow.h

    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
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <tube.h>
     
     
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
     
     
    QT_END_NAMESPACE
     
    class MainWindow : public QMainWindow,public tube
    {
        Q_OBJECT
     
    public:
        MainWindow(QWidget *parent=nullptr);
        ~MainWindow();
        MainWindow(double ,double);
     
    private slots:
        void on_pushButton_clicked();
        void on_pushButton_2_clicked();
     
    private:
        Ui::MainWindow *ui;
     
     
     
    };
    #endif // MAINWINDOW_H
    mainwindow.cpp

    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
    41
    42
    43
    44
    45
    46
    #include "mainwindow.h"
    #include "tube.h"
    #include "ui_mainwindow.h"
    #include "iostream"
     
    using namespace std;
     
    MainWindow::MainWindow(QWidget *parent): QMainWindow(parent),ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
     
     
     
     
    }
     
     
     
    MainWindow::~MainWindow()
    {
        delete ui;
     
    }
     
     
    MainWindow::MainWindow(double rayon,double hauteur) : tube(rayon,hauteur){}
     
     
     
    void MainWindow::on_pushButton_clicked()
    {
        ui->stackedWidget->setCurrentIndex(1);
     
        tube a(2,2);
     
        cout << a.calcul_volume();
     
     
     
    }
     
    void MainWindow::on_pushButton_2_clicked()
    {
        ui->stackedWidget->setCurrentIndex(0);
     
    }
    tube.h

    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
    #ifndef TUBE_H
    #define TUBE_H
     
    #include <QMainWindow>
     
     
    class tube
    {
    public:
     
        tube(double,double);
        double calcul_volume();
        double *rayon,*hauteur;
     
     
    private:
        const double pi = 3.1415;
     
     
     
    };
     
    #endif // TUBE_H
    tube.cpp

    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
    #include "tube.h"
     
    tube::tube(double rayon,double hauteur) : rayon(0),hauteur(0){
     
     
        this->rayon = new double (rayon);
        this->hauteur = new double (hauteur);
    }
     
     
    double tube::calcul_volume(){
     
     
         return pi**rayon**rayon**hauteur;
    }

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Ta ligne 8 de mainwindow.cpp initialise la base QMainWindow et le membre ui mais oublie d'initialiser la base tube.
    Ta ligne 26 de mainwindow.cpp initialise la base tube mais oublie d'initialiser la base QMainWindow et le membre ui.

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2020
    Messages : 25
    Par défaut
    Bonjour je viens prendre connaissance de votre message, mais hélas je bute toujours , en effet j'ai donc voulu initialiser le constructeur Mainwindow et tube de façon distincte(en prenant en compte vaux remarques) mais il me dise toujours comme quoi "tube" n'est pas initialiser...

    Mainwindow.h

    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
    41
    42
    43
    44
    45
    46
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <tube.h>
     
     
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    namespace Ui { class tube; }
     
     
     
    QT_END_NAMESPACE
     
    class MainWindow : public QMainWindow,public tube{
     
    public :
     
    // *****Constructreur***** //
        //MainWindow
        MainWindow(QWidget *parent=nullptr);
        //Tube
        MainWindow(double,double,QWidget *parent=nullptr);
    // ***** Destructeur ***** //
        ~MainWindow();
     
     
     
     
    private slots:
        void on_pushButton_clicked();
        void on_pushButton_2_clicked();
     
    private:
        Ui::MainWindow *ui;
     
     
     
     
     
     
     
     
    };
    #endif // MAINWINDOW_H
    Mainwindow.cpp

    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
    41
    42
    43
    44
    45
    46
    #include "mainwindow.h"
    #include "tube.h"
    #include "ui_mainwindow.h"
    #include "iostream"
     
    using namespace std;
     
    MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow){
        ui->setupUi(this);
     
    }
     
    MainWindow::MainWindow(double rayon,double hauteur,QWidget *parent) : tube(rayon,hauteur),QMainWindow(parent),ui(new Ui::MainWindow){
        ui->setupUi(this);
    }
     
     
     
     
    MainWindow::~MainWindow()
    {
        delete ui;
     
    }
     
     
     
     
     
    void MainWindow::on_pushButton_clicked()
    {
        ui->stackedWidget->setCurrentIndex(1);
     
        tube a(2,2);
     
        cout << a.calcul_volume();
     
     
     
    }
     
    void MainWindow::on_pushButton_2_clicked()
    {
        ui->stackedWidget->setCurrentIndex(0);
     
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2015, 16h09
  2. Réponses: 2
    Dernier message: 28/11/2014, 15h21
  3. Instancier une classe dans un constructeur d'une autre classe ?
    Par ctobini dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 17/12/2012, 11h11
  4. Réponses: 1
    Dernier message: 16/08/2007, 18h34
  5. Réponses: 12
    Dernier message: 11/11/2005, 14h25

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