Я столкнулся со следующей схемой и удивился, есть ли для нее имя?
enum
определяет конкретные классы:
enum Fruits{ eApple, eBanana };
И шаблон struct
обеспечивает интерфейс:
template< Fruit T >
struct SomeFruit {
void eatIt() { // assert failure };
};
Затем мы можем реализовать конкретные классы следующим образом:
template<>
struct SomeFruit< eApple > {
void eatIt() { // eat an apple };
};
template<>
struct SomeFruit< eBanana > {
void eatIt() { // eat a banana };
};
И используйте их так:
SomeFruit< eApple> apple;
apple.eatIt();