class Foo
{
private:
struct SharedProperties
{
std::unique_ptr baz;
};
static std::weak_ptr<SharedProperties> m_weakShared;
std::shared_ptr<SharedProperties> m_shared;
};
Foo::Foo()
{
if (!m_weakShared.expired())
{
m_shared = m_weakShared.lock();
}
else
{
m_shared = std::make_shared<SharedProperties>();
m_weakShared = std::weak_ptr<SharedProperties>(m_shared);
// Initialize the shared properties here
m_shared->baz.reset(new Baz());
}
}
Monday, February 13, 2012
Constructing static class members on-demand
A little pattern I like to use when I have resources shared among all instances of a class which should only be constructed when an object of the class is instantiated (and destroyed with the last object):
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment