Dr. Dobb's Journal June 1998
(a)
class Dog;
class Person {
public:
void addPet(Dog* d)
{ pets_.add(d); }
private:
Vector pets_;
};
class Dog {
public:
Dog() : master_(0) { }
void setMaster(Person* p)
{ master_ = p; }
private:
Person* master_;
};
(b)
Person* bill = new Person();
Dog* fido = new Dog();
bill->addPet(fido);
fido->setMaster(bill);
(c)
Dog::setMaster(Person* p)
{
master_ = p;
master_->addPet(this);
}