No he utilizado las características avanzadas de C++ por un tiempo y estoy refrescando mi conocimiento de C++ .. Habiendo dicho eso, el concepto de rasgos y programación basada en políticas fue algo que nunca logré realmente para entender.C++ ejemplo de rasgos para esta clase
Quiero cambiar eso. Estoy escribiendo un contenedor genérico. Quiero aplicar una política que indique que el contenedor almacenará solo las clases que se derivan de una clase base particular. Esto se debe a que el contenedor devuelve un objeto no válido (en lugar de tirar) cuando se intenta acceder a un elemento fuera de los límites del vector.
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;
};
¿Cómo iba a utilizar para restringir los rasgos de este contenedor genérico para contener sólo subclases de la clase 'ContainerItem' decir?
El estándar (C++ 0x) instalación de esto es 'plantilla struct is_base_of;' –
is_base_of también se pueden encontrar en impulso y TR1 para los compiladores que carecen de C++ apoyo 0x – Grizzly