fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class ClassA; // Forward declaration
  5.  
  6. class ClassB; // Forward declaration
  7.  
  8. // Friend function declaration
  9. int sumPrivate(ClassA a, ClassB b);
  10.  
  11. class ClassA {
  12. private:
  13. int numA;
  14.  
  15. public:
  16. ClassA(int n) { numA = n; }
  17.  
  18. // Declare friend function
  19. friend int sumPrivate(ClassA a, ClassB b);
  20. };
  21.  
  22. class ClassB {
  23. private:
  24. int numB;
  25.  
  26. public:
  27. ClassB(int n) { numB = n; }
  28.  
  29. // Declare friend function
  30. friend int sumPrivate(ClassA a, ClassB b);
  31. };
  32.  
  33. // Friend function definition
  34. int sumPrivate(ClassA a, ClassB b) {
  35. // Access private members of both classes
  36. return a.numA + b.numB;
  37. }
  38.  
  39. int main() {
  40. ClassA objA(10);
  41. ClassB objB(20);
  42.  
  43. cout << "Sum of private members: " << sumPrivate(objA, objB) << endl;
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
Sum of private members: 30