Ilmoittamalla luokka toisen luokan ystäväksi saadaan ehkä edellistä oliomaisempi ratkaisu:
/* FRIEND2.CPP */ /* Esimerkissä tehdään funktiot, jotka kertovat mahtuuko ympyrä neliöön ja päinvastoin. Toteutus ystäväluokan avulla. */ #include <iostream.h> #include <math.h> class cNelio; // Eteenpäin viittaus jotta void. käyt. ympyrässä class cYmpyra{ friend cNelio; double r; // Säde public: cYmpyra(double d=1.0) { r = d; } int mahtuuko(const cNelio &n) const; int mahtuuko(const cYmpyra &y2) const { return ( r < y2.r ); } }; class cNelio{ double s; // Sivun pituus friend cYmpyra; public: cNelio(double d=1.0) { s = d; } int mahtuuko(const cYmpyra &y) const { return ( sqrt(2.0)*s/2 < y.r ); } int mahtuuko(const cNelio &n2) { return ( s < n2.s ); } }; int cYmpyra::mahtuuko(const cNelio &n) const { return ( 2*r < n.s ); } int main(void) { cNelio n1(2.1),n2(2.5); cYmpyra y1(0.9),y2(1.2); if ( n1.mahtuuko(y1) ) cout << "Neliö 1 mahtuu ympyrän 1 sisälle.\n"; if ( y1.mahtuuko(n1) ) cout << "Ympyrä 1 mahtuu neliön 1 sisälle.\n"; if ( y1.mahtuuko(y2) ) cout << "Ympyrät mahtuvat sisäkkäin.\n"; if ( n1.mahtuuko(n2) ) cout << "Neliöt mahtuvat sisäkkäin.\n"; return 0; }