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 :

problème declaration entre deux class


Sujet :

C++

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut problème declaration entre deux class
    Bonjour,

    j'ai une class A où j'ai déclaré une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class A
    {
    private:
    int x;
    }
    j'ai déclaré une autre class B dans le projet mais dans un autre fichier

    quand j'utilise x il me dit que qu'il n'est pas déclaré

    comment je déclare x pour qu'il être connus par B?

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 50
    Points
    50
    Par défaut Re :
    La classe B a-t-elle un lien avec la classe A (héritage ...) ?

    Sinon, effectivement, x est interne à A.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    Bon, voilà ce que j'ai fait maintenant
    j'ai un fichier mainwindows.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MainWindow::MainWindow()
    { ..............................................................
    	Coordinate3dWidget *camPosModifier;
    	 camPosModifier = new Coordinate3dWidget(this);
    la class Coordinate3dWidget est définie comme ça
    Coordinate3dWidget.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class MainWindow;
    class Coordinate3dWidget : public QObject//QWidget
    { 
        Q_OBJECT
    public:
        Coordinate3dWidget(QWidget *parent=0);
    ....................................
    MainWindow  *wind;
    Coordinate3dWidget.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class MainWindow;
    Coordinate3dWidget::Coordinate3dWidget(QWidget *parent):QObject(parent)
       // QWidget(parent)
    {
    			wind=new MainWindow();
    l'erreur maintenant est dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     camPosModifier = new Coordinate3dWidget(this);
    il me dit qu'il n y a pas un constructeur pour "Coordinate3dWidget" pourtant il existe

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Citation Envoyé par Lyadrielle Voir le message
    La classe B a-t-elle un lien avec la classe A (héritage ...) ?

    Sinon, effectivement, x est interne à A.
    x est private donc seul les méthodes de A peuvent accéder à x.


    Sinon MainWindow doit hériter de QWidget.

    En effet, ici camPosModifier = new Coordinate3dWidget(this); tu essayes d'appeler le constructeur Coordinate3dWidget(MainWindows *);, or il n'existe pas. Si tu veux appeler le constructeur Coordinate3dWidget(QWidget *parent=0);, il faudra que MainWindow hérite de QWidget.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    merci pour l'explication
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si tu veux appeler le constructeur Coordinate3dWidget(QWidget *parent=0);, il faudra que MainWindow hérite de QWidget.
    tu veux dire je dois faire ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class MainWindow : public  QWidget
    parce que même avec ça , il m'affiche une erreur dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camPosModifier = new Coordinate3dWidget();
    il ne sait pas leur constructeur

  6. #6
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    Si MainWindow doit être un QWidget, ça semble raisonnable.
    Mais n'y a-t-il pas une classe QWindow ou autre, qui correspondrait mieux ?

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    l'erreur a disparus
    mais lors de l’exécution il entre dans une boucle infini (je crois)
    parce qu'il reste dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Coordinate3dWidget::Coordinate3dWidget(QWidget *parent):
        QWidget(parent)
    {
     wind=new MainWindow();
    et c'est vrais parce que quand il fait new mainwindow dans mainwindws il fait aussi new Coordinate3dWidget
    avez vous une aidé comment réglé ce problème
    j'ai fait
    wind=new MainWindow() parce qu'il y a un variable qui définie dans cette class et je veux l'utiliser dans la class Coordinate3dWidget

  8. #8
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 136
    Points
    23 136
    Par défaut
    Si tu as vraiment besoin de deux mainWindows, il suffit de déclarer un constructeur mainWindows(char c) où l'argument ne servira à rien mais permettra de différencier deux constructeurs de mainWindows ce qui te permettra de casser ta boucle infinie.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/06/2011, 18h27
  2. Problème accès aux propriétés entre deux classes liées par many-to-one
    Par moha1984 dans le forum Persistance des données
    Réponses: 1
    Dernier message: 21/06/2010, 10h07
  3. Problème de portée entre deux classes
    Par Shikette dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 13/11/2009, 22h32
  4. Problème d'inclusion entre deux classes.
    Par XavierHWT dans le forum Débuter
    Réponses: 2
    Dernier message: 25/05/2009, 14h52
  5. Problèmes d'inclusion entre deux classes
    Par Invité dans le forum C++
    Réponses: 3
    Dernier message: 26/05/2008, 14h41

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