.. _program_listing_file_arbitrary_DerivedClass.h: Program Listing for File DerivedClass.h ======================================= |exhale_lsh| :ref:`Return to documentation for file ` (``arbitrary/DerivedClass.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include NAMESPACE_BEGIN(arbitrary) enum CAMERA_STATES { CAM_NONE = (1 << 0), CAM_ROTATE = (1 << 1), CAM_TRANSLATE = (1 << 2), CAM_SCALE = (1 << 3) }; template class DerivedClass : public BaseClass { public: typedef T SuperParent; DerivedClass() : BaseClass(N) {} virtual ~DerivedClass() {} void virtualMethod() { std::cout << " virtualMethod() current index is [" << current_index << "]." << std::endl; current_index++; if(current_index >= N) current_index = 0; } bool insertAt(T &item, unsigned int index) { if(index >= N) return false; items[index] = item; return true; } const T& itemAt(unsigned int index) { if(index >= N) throw std::runtime_error("Invalid index."); else return items[index]; } protected: T items[N]; unsigned int current_index = 0; }; template class DerivedClass : public BaseClass {}; template <> class DerivedClass : public BaseClass {}; NAMESPACE_END(arbitrary)