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
| #ifndef A_HPP
#define A_HPP
class B;
class C;
class D;
class A
{
public:
/* sont autorisées les implémentations des fonctions qui n'ont
* pas besoin de connaitre les autres classes, comme
*/
void setB(B* toset){myB = toSet;}
B* retunBpointer(){return myB;}
B const & returnBconstRef() const{return *myB;}
/* sont autorisée les déclarations des fonctions qui mainipule des
* pointeurs ou des référence vers les autres classes, mais qui ont
* besoin de connaitre la classe en question : l'implémentation
* devra se trouver dans le fichier d'implémentation ( A.cpp)
*/
void useCpointer(C * touse) /* const */;
void useDref( D /* const */ & ) /* const */;
/* sont interdites : les fonction qui manipulent les objet directement
* par valeur (par opostion à par pointeur et ou par référence)
*
* décommente ceci et ta compilation échouera :D
*
*/
// B getB()/* const */{return myB;}
// void useC( C touse) ;
// void useD( D touse);
// C useDreturnsC( D touse) ;
private:
B * myB;
C * myC;
D * myD;
};
#endif // A_HPP |
Partager