Hi. I have a heterogeneous container which maps (using an STL map) STL strings to arbitrarily typed values. I want to be able to send this container through ROOT I/O. I have learned how to send simple templated objects through ROOT I/O, but I can't seem to figure out how to do it in the case of my container. This container is implimented in 3 classes. The container is called Registry and it holds values of type (pointer to) RegistryItem. Each type T of value is stored in a templated subclass of RegistryItem called RegistryItemXxx<T>. These are outlined below: // The container class Registry { public: // non-templated ctor/dtor // templated accessors template<class T> T GetVal(string key); template<class T> void SetVal(string key, T value); private: map<string, RegistryItem*> fMap; }; // The generic class which the container holds class RegistryItem { public: // non-templated ctor/dtor // that's it }; // The templated class holding a specific typed value template<class T> class RegistryItemXxx : public RegistryItem { public: // templated ctor/dtor // templated accessors T* Get(void); void Set(T* data); private: T* fData; }; The Registry::GetVal() method uses dynamic_cast<RegistryItemXxx<T>*>() to turn a generic RegistryItem into the correctly typed version. This provides type safe access. Can any one give me some guidance on how to proceed to get this container to go through ROOT I/O ? Thanks, -Brett.
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:35 MET