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