Program Listing for File DerivedClass.h¶
↰ Return to documentation for file (arbitrary/DerivedClass.h
)
#pragma once
#include <typeinfo>
#include <iostream>
#include <string>
#include <exception>
#include <arbitrary/BaseClass.h>
NAMESPACE_BEGIN(arbitrary)
enum CAMERA_STATES {
CAM_NONE = (1 << 0),
CAM_ROTATE = (1 << 1),
CAM_TRANSLATE = (1 << 2),
CAM_SCALE = (1 << 3)
};
template <typename T, unsigned int N>
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 <unsigned int N>
class DerivedClass<arbitrary::arbitrary_struct, N> : public BaseClass {};
template <>
class DerivedClass<bool, 2> : public BaseClass {};
NAMESPACE_END(arbitrary)