1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| namespace kage
{
template< class _Definition, class _DefPtr = KAGE_WP(_Definition) >
class DefinedInstance
{
_DefPtr _definition;
public:
friend class _Definition;
_DefPtr getDefinition() { return _definition; }
DefinedInstance(_DefPtr def): _definition(def) {}
virtual ~DefinedInstance() {}
};
template< class _Definition, class _Base, typename _Param = void, class _DefPtr = KAGE_WP(_Definition) >
class InstanceOf2 : public _Base, public DefinedInstance<_Definition, _DefPtr>
{
protected:
InstanceOf2(_DefPtr def, _Param p) :
DefinedInstance(def),
_Base(p)
{
}
public:
virtual ~InstanceOf2() {}
};
template< class _Definition, class _Base, class _DefPtr >
class InstanceOf2<_Definition, _Base, void, _DefPtr> : public _Base, public DefinedInstance<_Definition, _DefPtr>
{
protected:
InstanceOf2(_DefPtr def) :
DefinedInstance(def),
_Base()
{
}
public:
virtual ~InstanceOf2() {}
};
} //namespace kage |
Partager