Я не использовал расширенные возможности С++ некоторое время и обновляю свои знания на С++. Сказав это, концепция черт и программ, основанных на политике, была чем-то, что мне никогда не удавалось обойти.
Я хочу изменить это. Я пишу общий контейнер. Я хочу применить политику, согласно которой контейнер будет хранить только классы, которые происходят из определенного базового класса. Это происходит потому, что контейнер возвращает недопустимый объект (вместо метания), когда делается попытка получить доступ к элементу вне границ вектора.
template <class T>
class GenericContainer
{
private:
typedef std::vector<T> TypeVect;
void addElement(const T& elem);
TypeVect m_elems;
public:
unsigned int size() const;
T& elementAt(const unsigned int pos);
const T elementAt(const unsigned int pos) const;
};
Как я могу использовать черты, чтобы ограничить этот общий контейнер содержащими только подклассы класса 'ContainerItem' say?