wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 2

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Problème d'accès aux données. (conception surement mauvaise)
Conversation (Résolue) : Problème d'accès aux données. (conception surement mauvaise)
01-07-2010 09:50:26  Problème d'accès aux données. (conception surement mauvaise) #1
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour.

J'ai plusieurs classes A, B, C.
La classe A a pour données membres, des données à elle et des données du type B et C.

plus clairement :

Code:

 
 
class B;
class C;
 
class A {
   public :
        int x;
        B   b;
        C   c;
}
 

Lorsque je suis dans une méthode de B ou de C, je souhaiterais avoir accès à x. Comment faire ?
J'ai essayé l'héritage mais comme mes 3 classes sont déjà des classes héritières, je me retrouve avec des problèmes d'ambiguité avec wxWindow ... etc ..
Merci pour votre aide.

Yann
01-07-2010 10:08:40  Re: Problème d'accès aux données. (conception surement mauvaise) #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Une possibilité assez simple serait de passer un pointeur (ou une référence) vers la classe A lors de la construction de B et C.

Par exemple :

Code Cpp:

class A;
class B
{
    public:
        B(A& parent);
    private:
        A& m_parent;
};
 
class A
{
    public:
        int x;
        B b;
};
 
B::B(A& parent) : m_parent(parent)
{
    // Constructeur de la classe B
    m_parent.x=0;
}
 


C'est juste un exemple, mais normalement, ça devrait marcher.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
01-07-2010 15:10:06  Re: Problème d'accès aux données. (conception surement mauvaise) #3
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Merci.
J'ai encore un petit souci ... (j'abuse)

Code:

 
class winComposition : public wxMDIChildFrame
{
...
      partition           * AffichagePartition;
}
 
class partition : public wxScrolledWindow
{
    public:
        partition(wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxScrolledWindowStyle, const wxString& name = wxPanelNameStr, winComposition &argWinComposition= NULL);
        void OnDraw( wxDC &dc );
 
    private:
        winComposition &pWinComposition;
};
 

Dans les constructeurs j'ai :

Code:

 
winComposition::winComposition(wxMDIParentFrame *parent, const wxString& title) : wxMDIChildFrame(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE)
{
AffichagePartition = new partition ( m_panel45, WINDOWS_COMPOSITION_SCROLLBAR, wxDefaultPosition, wxDefaultSize, 0, *this );
}
 


Code:

 
partition::partition (   wxWindow *parent, wxWindowID winid,
                        const wxPoint& pos,
                        const wxSize& size,
                        long style,
                        const wxString& name,
                        winComposition &argWinComposition)  : wxScrolledWindow(parent, winid, pos, size, style, name)
                                                            : pWinComposition (argWinComposition)
{
}
 

A la compilation j'ai l'erreur suivante :

Code:

 
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|47|error: no matching function for call to `partition::partition(wxPanel*&, int, const wxPoint&, const wxSize&, int, winComposition&)'|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.h|44|note: candidates are: partition::partition(const partition&)|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.h|48|note:                 partition::partition(wxWindow*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&, winComposition&)|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|209|error: uninitialized reference member `partition::pWinComposition'|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|209|error: expected `{' before ':' token|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|209|error: expected unqualified-id before ':' token|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|224|error: base operand of `->' has non-pointer type `winComposition'|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|224|error: `zoom' was not declared in this scope|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|224|warning: unused variable 'zoom'|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|220|warning: unused variable 'x'|
C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|220|warning: unused variable 'y'|
||=== Build finished: 8 errors, 3 warnings ===|
 

Merci pour toute ton aide...

Yann

Dernière modification par yannp (01-07-2010 15:12:28)

01-07-2010 15:34:14  Re: Problème d'accès aux données. (conception surement mauvaise) #4
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,

Code Cpp:

 
partition::partition (   wxWindow *parent, wxWindowID winid,
                        const wxPoint& pos,
                        const wxSize& size,
                        long style,
                        const wxString& name,
                        winComposition &argWinComposition)  : wxScrolledWindow(parent, winid, pos, size, style, name), pWinComposition (argWinComposition)
{
}
 

ce sont des virgules.

exemple :

Code Cpp:

class FiatPanda : public Voiture
{
   public:
      FiatPanda(Propriétaire &prop);
   private:
      Volant       m_Volant;
      Roues        m_Roues;
      Chassi       m_Chassi;
      Moteur       m_Moteur;
      Propriétaire m_Propriétaire;
};
 
FiatPanda::FiatPanda(Propriétaire prop) :
Voiture("petite","fiat","panda"),
m_Volant(1),
m_Roues(4),
m_Chassi("rouillé", 1),
m_Moteur(999),
m_Proprietaire(prop)
{
   m_Moteur.PrierPourQuilDemarre();
   m_Moteur.Demarrer();
...
}


C'est un exemple mais c'est l'idée,
Sem
01-07-2010 16:08:27  Re: Problème d'accès aux données. (conception surement mauvaise) #5
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Ok merci, ca marche nickel.

Yann
01-07-2010 17:57:26  Re: Problème d'accès aux données. (conception surement mauvaise) #6
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1375
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Sem:
...
ce sont des virgules.
...
C'est un peu de ma faute : j'ai eut la flemme de pousser l'exemple avec plusieurs classes : j'aurais dû le faire.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Problème d'accès aux données. (conception surement mauvaise)