#include <iostream>
using namespace std;
class ClassA; // Forward declaration
class ClassB; // Forward declaration
// Friend function declaration
int sumPrivate(ClassA a, ClassB b);
class ClassA {
private:
int numA;
public:
ClassA(int n) { numA = n; }
// Declare friend function
friend int sumPrivate(ClassA a, ClassB b);
};
class ClassB {
private:
int numB;
public:
ClassB(int n) { numB = n; }
// Declare friend function
friend int sumPrivate(ClassA a, ClassB b);
};
// Friend function definition
int sumPrivate(ClassA a, ClassB b) {
// Access private members of both classes
return a.numA + b.numB;
}
int main() {
ClassA objA(10);
ClassB objB(20);
cout << "Sum of private members: " << sumPrivate(objA, objB) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ2xhc3NBOyAvLyBGb3J3YXJkIGRlY2xhcmF0aW9uCgpjbGFzcyBDbGFzc0I7IC8vIEZvcndhcmQgZGVjbGFyYXRpb24KCi8vIEZyaWVuZCBmdW5jdGlvbiBkZWNsYXJhdGlvbgppbnQgc3VtUHJpdmF0ZShDbGFzc0EgYSwgQ2xhc3NCIGIpOwoKY2xhc3MgQ2xhc3NBIHsKcHJpdmF0ZToKICAgIGludCBudW1BOwoKcHVibGljOgogICAgQ2xhc3NBKGludCBuKSB7IG51bUEgPSBuOyB9CgogICAgLy8gRGVjbGFyZSBmcmllbmQgZnVuY3Rpb24KICAgIGZyaWVuZCBpbnQgc3VtUHJpdmF0ZShDbGFzc0EgYSwgQ2xhc3NCIGIpOwp9OwoKY2xhc3MgQ2xhc3NCIHsKcHJpdmF0ZToKICAgIGludCBudW1COwoKcHVibGljOgogICAgQ2xhc3NCKGludCBuKSB7IG51bUIgPSBuOyB9CgogICAgLy8gRGVjbGFyZSBmcmllbmQgZnVuY3Rpb24KICAgIGZyaWVuZCBpbnQgc3VtUHJpdmF0ZShDbGFzc0EgYSwgQ2xhc3NCIGIpOwp9OwoKLy8gRnJpZW5kIGZ1bmN0aW9uIGRlZmluaXRpb24KaW50IHN1bVByaXZhdGUoQ2xhc3NBIGEsIENsYXNzQiBiKSB7CiAgICAvLyBBY2Nlc3MgcHJpdmF0ZSBtZW1iZXJzIG9mIGJvdGggY2xhc3NlcwogICAgcmV0dXJuIGEubnVtQSArIGIubnVtQjsKfQoKaW50IG1haW4oKSB7CiAgICBDbGFzc0Egb2JqQSgxMCk7CiAgICBDbGFzc0Igb2JqQigyMCk7CgogICAgY291dCA8PCAiU3VtIG9mIHByaXZhdGUgbWVtYmVyczogIiA8PCBzdW1Qcml2YXRlKG9iakEsIG9iakIpIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K