AMDG Robert Dailey wrote:
Hi,
I have a singleton class called InputRegistry. Before the class is used, the user must call:
InputRegistry::Initialize();
I would like this function to take a parameter that defines the type of a critical section object, which is unknown at compile time (template). I need to store this type in my InputRegistry class so that the unknown critical section type can be constructed later. How can I do this without making InputRegistry a template class? If I make InputRegistry a template, that basically means I need to redesign the class, as the singleton pattern would not apply if it were a template class.
I'm hoping boost can help here. Thanks in advance.
I would expect the solution to look something like this (warning untested)
struct critical_section_base {
virtual void lock() = 0;
virtual void unlock() = 0;
};
template<class T>
struct critical_section_wrapper {
public:
virtual void lock() { t.lock(); }
virtual void unlock() { t.unlock(); }
private:
T t;
};
class InputRegistry {
public:
template<class T>
static void Initialize() {
critical_section_generator =
boost::lambda::new_