Passage de this dans un constructeur
Bonjour,
J'ai une classe A qui a différent objets dont un objet de classe B.
Code:
1 2 3 4 5 6 7 8
| class A{
protected:
B * m_b;
...
public:
void methode();
}
}; |
J'ai besoin d'appeler une méthode de A dans l'objet m_b.
J'ai donc passé le pointeur this au constructeur de B.
Code:
1 2 3 4 5 6 7 8 9
|
class A;
class B{
public:
B(A * a){ m_a = a;}
protected:
A * m_a;
};
} |
L'objet m_b était créé ainsi : m_b = new B(this) (dans A).
Tout marchait bien jusqu'à ce que j'ai eu besoin de passer le pointeur de A au sein d'un objet C contenu dans B. J'ai utilisé la même méthode que précédemment mais voici le genre d'erreur de compilation qu'il m'affichait :
In file included from main_window.hh:20, //A
from treeviewpopup.h:24, //C
from treeviewpopup.cpp:12:
onrequestbox.h:40: // B
erreur: «TreeviewPopup» does not name a type
En recherchant sur le net, je me suis aperçu que le passage par référence étant plus approprié.
J'ai donc remanié le code ainsi :
Code:
1 2 3 4 5 6 7 8
| class A{
protected:
B * m_b;
...
public:
void methode(){ m_b = new B(*this);};
}
}; |
Code:
1 2 3 4 5 6 7 8 9 10
|
class A;
class B{
public:
B(A& a):m_a(&a), m_c(a){};
protected:
A * m_a;
C m_c;
};
} |
Code:
1 2 3 4 5 6 7 8 9
|
class A;
class C{
public:
C(A& a):m_a(a){};
protected:
A * m_a;
};
} |
Le compilateur me sort toujours les mêmes erreurs.
Je suis en perdu, comment faire ?