Timothy Perrigo wrote: ...
I need to create a kind of registry to keep track of instances of variables of different types (actually, several of these registries, representing different system states); variables of a type would be identified by an unique (integer) id. In other words, the variables within a particular registry represent the state of the system at a given point in time, so although each registry would have variables of the same types and ids, the values of the variables in different registries may be different. If the variables were all of the same type, a simple map would work. What I would like is a way of asking this registry for a variable of a specified type and id, and get back the appropriate instance (of the appropriate type). I.e., something like the following would be ideal:
MyType mt = registry.get<MyType>(my_id);
why not create a templated registry? surely that would solve your problem if each registry could only hold a particular type then instead of typing MyType mt = registry.get<MyType>(my_id); you could type: MyType mt = registry<MyType>.get(my_id); but if you want to have lots of registries of type MyType why not have a static factory function within each registry class, lets say we want a particular registry based upon a integer id, then you could write: MyType mt = registry<MyType>::GetInstance(5).get(my_id); jonathan oulds