#include <iostream>
using namespace std;
class Box {
double width;
public:
friend void printWidth( Box box );
void setWidth( double wid );
};
// Member function definition
void Box::setWidth( double wid ) {
width = wid;
}
// Note: printWidth() is not a member function of any class.
void printWidth( Box box ) {
/* Because printWidth() is a friend of Box, it can
directly access any member of this class */
cout << "Width of box : " << box.width <<endl;
}
// Main function for the program
int main() {
Box box;
// set box width without member function
box.setWidth(10.0);
// Use friend function to print the wdith.
printWidth( box );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKY2xhc3MgQm94IHsKICAgZG91YmxlIHdpZHRoOwogICAKICAgcHVibGljOgogICAgICBmcmllbmQgdm9pZCBwcmludFdpZHRoKCBCb3ggYm94ICk7CiAgICAgIHZvaWQgc2V0V2lkdGgoIGRvdWJsZSB3aWQgKTsKfTsKCi8vIE1lbWJlciBmdW5jdGlvbiBkZWZpbml0aW9uCnZvaWQgQm94OjpzZXRXaWR0aCggZG91YmxlIHdpZCApIHsKICAgd2lkdGggPSB3aWQ7Cn0KCi8vIE5vdGU6IHByaW50V2lkdGgoKSBpcyBub3QgYSBtZW1iZXIgZnVuY3Rpb24gb2YgYW55IGNsYXNzLgp2b2lkIHByaW50V2lkdGgoIEJveCBib3ggKSB7CiAgIC8qIEJlY2F1c2UgcHJpbnRXaWR0aCgpIGlzIGEgZnJpZW5kIG9mIEJveCwgaXQgY2FuCiAgIGRpcmVjdGx5IGFjY2VzcyBhbnkgbWVtYmVyIG9mIHRoaXMgY2xhc3MgKi8KICAgY291dCA8PCAiV2lkdGggb2YgYm94IDogIiA8PCBib3gud2lkdGggPDxlbmRsOwp9CiAKLy8gTWFpbiBmdW5jdGlvbiBmb3IgdGhlIHByb2dyYW0KaW50IG1haW4oKSB7CiAgIEJveCBib3g7CiAKICAgLy8gc2V0IGJveCB3aWR0aCB3aXRob3V0IG1lbWJlciBmdW5jdGlvbgogICBib3guc2V0V2lkdGgoMTAuMCk7CiAgIAogICAvLyBVc2UgZnJpZW5kIGZ1bmN0aW9uIHRvIHByaW50IHRoZSB3ZGl0aC4KICAgcHJpbnRXaWR0aCggYm94ICk7CiAKICAgcmV0dXJuIDA7Cn0=