Ho due classi, punti e pixel:C++ eredità/template domanda
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;
}
Ora qui è il mio problema. Voglio creare una classe contenitore (chiamiamola coll) che ha un vettore privato di punti o pixel. Se un'istanza di coll contiene pixel, voglio che abbia un metodo toArray(), che converte il suo vettore di pixel in una matrice di T che rappresenta il contenuto del vettore.
Stavo per farlo con l'ereditarietà: cioè, potrei creare un coll di classe base che contenga un vettore di punti e una classe derivata che contiene il metodo extra, ma poi mi sembra di imbattersi in problemi poiché pixel è un modello di classe.
Qualcuno ha suggerimenti? Potrei farlo in qualche modo creando un modello di classe coll?
Penso che 'coll' dovrebbe essere anche una classe template. Quindi puoi parzialmente specializzare 'coll' per punti e per pixel. – Philipp
Il pixel è un insieme di coordinate (ad esempio "punto" ereditario) o ha delle coordinate (ad esempio, contiene un'istanza di punto)? – Patrick
Si eredita dal punto. – amc