![]() |
CRTP-problem: How can the base class typedef a derived class' typedef?
CRTP: Curiously recurring template pattern
Motivation: Instead of every derived class having to implement the getSomeClass() method, I want by static polymorphism the base class to do it more or less in a way outlined in the code commented out in the base class. In the example below, the derived class is a template class, I guess that's not important for the solution, but anyways, that's how I need it to be in my case. Anybody having an idea of how to achieve my goal? base_and_derived.h =============== // -------------------------------------------- template <int J> class SomeClasss{ }; // -------------------------------------------- template <template <int> class DERIVED> class Base { public: /* // I want, but cannot get it to work: typedef DERIVED::my_type same_type_higher_up; */ /* // I want, but cannot get it to work: same_type_higher_up *getInstanceOfSameTypeHigherUp() const { return new same_type_higher_up(); } */ }; // -------------------------------------------- template <int I> class Derived : public Base<Derived> { public: typedef SomeClasss<I> my_type; public: my_type *getSomeClass() const{ return new my_type(); } }; // -------------------------------------------- main.cpp ======= #include "base_and_derived.h" int _tmain(int argc, _TCHAR* argv[]) { // Works fine: Derived<7> *derived = new Derived<7>(); Derived<7>::my_type *someClassInstance = derived->getSomeClass(); delete someClassInstance; delete derived; /* // I want, but cannot get it to work: Derived<7> *derived = new Derived<7>(); Derived<7>::same_type_higher_up *instanceOfSameTypeHigherUp = derived->getInstanceOfSameTypeHigherUp(); delete instanceOfSameTypeHigherUp; delete derived; */ } // -------------------------------------------- |
| All times are GMT. The time now is 12:44 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.