#include using namespace std; class A; // Le compilateur doit savoir que A est une classe... pas utile ici ! class B; // Le compilateur doit savoir que B est une classe... pas utile ici ? //=========================== Declaration classe A ================== class A { friend class B; public : void setA(int a); private : int _a; }; //=========================== Declaration + Code classe B =========== class B { public : int f(const A& a) { return 3 + a._a; } int g(const A& a) { return 3 * a._a; } }; //=========================== Code classe A ========================= void A::setA(int a) { _a = a; } //=========================== Code main ============================= int main(void) { A a; a.setA(10); B b; cout << b.f(a) << " " << b.g(a) << endl; // 13 30 return 0; }