Tengo dos clases, y punto de píxel:C++ herencia/plantilla de preguntas
class point {
public:
point(int x, int y) : x(x), y(y) { };
private:
int x, y;
}
template <class T>
class pixel : public point {
public:
pixel(int x, int y, T val) : point(x, y), val(val) { };
private:
T val;
}
Ahora aquí es mi problema. Quiero hacer una clase contenedora (llamémosle coll) que tenga un vector privado de puntos o píxeles. Si una instancia de coll contiene píxeles, quiero que tenga un método para Array(), que convierte su vector de píxeles a una matriz de T que representa el contenido del vector.
Iba a hacer esto con la herencia: es decir, podría hacer un coll de clase base que contenga un vector de puntos y una clase derivada que contenga el método extra, pero luego parece que tengo problemas ya que pixel es plantilla de clase.
¿Alguien tiene alguna sugerencia? ¿Podría hacer esto de alguna manera haciendo de coll una plantilla de clase?
Creo que 'coll' también debería ser una clase de plantilla. Entonces puedes especializar parcialmente 'coll' para puntos y para píxeles. – Philipp
¿Es el píxel un conjunto de coordenadas (es decir, hereda el "punto") o tiene coordenadas (es decir, contiene una instancia de punto)? – Patrick
Hereda del punto. – amc