class CollectionItemTypeBase
{
protected:
- class TagBase
+ struct TagBase
{
- protected:
- TagBase() { }
- public:
virtual ~TagBase() { }
};
template<typename T>
- class Tag: public TagBase
+ struct Tag: TagBase
{ };
std::string kwd;
class CollectionItemType: public CollectionItemTypeBase
{
private:
- class CreatorBase
+ struct CreatorBase
{
- protected:
- CreatorBase() { }
- public:
virtual ~CreatorBase() { }
virtual T *create(Collection &, const std::string &) const = 0;
};
template<typename C>
- class Creator: public CreatorBase
+ struct Creator: CreatorBase
{
- public:
typedef T *(C::*FuncPtr)(const std::string &);
- private:
FuncPtr func;
- public:
Creator(FuncPtr f): func(f) { }
virtual T *create(Collection &coll, const std::string &name) const
{ return (static_cast<C &>(coll).*func)(name); }
};
- class StoreBase
+ struct StoreBase
{
- protected:
- StoreBase() { }
- public:
virtual ~StoreBase() { }
virtual void store(Collection &, const std::string &, T *) = 0;
};
template<typename S>
- class Store: public StoreBase
+ struct Store: StoreBase
{
- public:
virtual void store(Collection &coll, const std::string &name, T *obj)
{ coll.add(name, static_cast<S *>(obj)); }