///////////////////////////////////////////////////////////////////// // Class1.cpp - has a mutual dependency relationship with Class1 // // // // Jim Fawcett, CSE687 - Object Oriented Design, Fall 2018 // ///////////////////////////////////////////////////////////////////// #include #include "Class1.h" #include "Class2.h" Class1::Class1() { std::cout << "\n instance of Class1 created"; } Class1::~Class1() { // don't need to delete pClass2 - unique_ptr takes care of that std::cout << "\n instance of Class1 destroyed"; } void Class1::registerClass2(std::shared_ptr pClass2) { pClass2_ = pClass2; } void Class1::say(bool otherSay) { std::cout << "\n Hi from instance of Class1"; if (otherSay && pClass2_ != nullptr) { std::cout << "\n my aggregated Class2 member says: "; pClass2_->say(false); // false prevents infinite recursion } }