///////////////////////////////////////////////// // MT1Q1_2Q5.cpp - Sharer with Categories // // // // Jim Fawcett, CSE687 - Midterm, Spring 2010 // ///////////////////////////////////////////////// #include #include #include typedef std::vector vecStr; template class shared { public: static T& value() { return shared_t; } private: static T shared_t; }; template T shared::shared_t; void fun1() { std::cout << "\n in fun1(), setting shared to 3"; shared::value() = 3; } void fun2() { std::cout << "\n in fun2(), value of shared is: " << shared::value(); std::cout << "\n in fun2(), setting value of shared to -2"; shared::value() = -2; } void fun3() { // copy temporary std::vector into shared vecStr* pVecStr = new vecStr(); shared::value() = *pVecStr; delete pVecStr; // and use the shared vector shared::value().push_back("aardvark"); shared::value().push_back("platypus"); } void main() { std::cout << "\n MT1Q1_2Q5 - Sharer with Categories"; std::cout << "\n ===================================="; fun1(); fun2(); std::cout << "\n value of shared in main is: " << shared::value(); std::cout << "\n"; fun3(); std::cout << "\n values from shared vector:"; for(size_t i=0; i::value().size(); ++i) std::cout << "\n " << shared::value()[i]; std::cout << "\n\n"; }