Singleton Review: global variables

In the singleton documentation it states that "singletons" could/should replace all global variables in an application. Does this comment apply to global vectors as well. I have a vector of boost::any which I've declared static in a resource class. <code below> struct resource { static std::vector<boost::any> resources; ...<more>... }; std::vector<boost::any> resource::resouces; How would one incorporate this global vector into the singleton library to take advantage of its facilities.

"Tom Brinkman" wrote:
In the singleton documentation it states that "singletons" could/should replace all global variables in an application. Does this comment apply to global vectors as well.
I have a vector of boost::any which I've declared static in a resource class.
<code below>
struct resource { static std::vector<boost::any> resources; ...<more>... };
std::vector<boost::any> resource::resouces;
How would one incorporate this global vector into the singleton library to take advantage of its facilities.
The wording should be less definitive, IMHO. a) By wrapping the vector in a class and then deriving singleton from result. struct resource : basic_singleton<resource> { std::vector<boost::any> any_resources; }; .... resource::pointer ptr; ptr->any_resources.push_back(...); b) Or if you only want to destroy the resource at certain moment when the application closes, you may do: // global variable but destroyed before singletons with higher longevity shared_ptr <vector<any> > > my_resources ( new vector<any>() ); singleton::store_resource ( my_resources ); /Pavel
participants (2)
-
Pavel Vozenilek
-
Tom Brinkman