#include <string>
#include <iostream>
struct Guy ;
struct Girl
{
Girl( Guy* g = 0 ) : boyfriend(g) {}
Guy* boyfriend ;
};
struct Guy
{
Guy( const std::string& n ) : name(n) {}
const std::string name ;
// ...
};
int main()
{
Guy a( "a") ;
Girl b( &a ) ;
if( b.boyfriend ) std::cout << b.boyfriend->name << '\n' ;
Guy c( "c" ) ;
b.boyfriend = &c ;
if( b.boyfriend ) std::cout << b.boyfriend->name << '\n' ;
b.boyfriend = 0 ;
if( b.boyfriend ) std::cout << b.boyfriend->name << '\n' ;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEd1eSA7CgpzdHJ1Y3QgR2lybAp7CiAgICBHaXJsKCBHdXkqIGcgPSAwICkgOiBib3lmcmllbmQoZykge30KICAgIEd1eSogYm95ZnJpZW5kIDsKfTsKCnN0cnVjdCBHdXkKewogICAgR3V5KCBjb25zdCBzdGQ6OnN0cmluZyYgbiApIDogbmFtZShuKSB7fQogICAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZSA7CiAgICAvLyAuLi4KfTsKCmludCBtYWluKCkKewogICAgR3V5IGEoICJhIikgOwoKICAgIEdpcmwgYiggJmEgKSA7CiAgICBpZiggYi5ib3lmcmllbmQgKSBzdGQ6OmNvdXQgPDwgYi5ib3lmcmllbmQtPm5hbWUgPDwgJ1xuJyA7CgogICAgR3V5IGMoICJjIiApIDsKICAgIGIuYm95ZnJpZW5kID0gJmMgOwogICAgaWYoIGIuYm95ZnJpZW5kICkgc3RkOjpjb3V0IDw8IGIuYm95ZnJpZW5kLT5uYW1lIDw8ICdcbicgOwoKICAgIGIuYm95ZnJpZW5kID0gMCA7CiAgICBpZiggYi5ib3lmcmllbmQgKSBzdGQ6OmNvdXQgPDwgYi5ib3lmcmllbmQtPm5hbWUgPDwgJ1xuJyA7Cn0K