ich zwei Klassen haben, Punkt und Pixel:C++ Vererbung/template Frage
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;
}
hier ist jetzt mein Problem. Ich möchte eine Container-Klasse erstellen (nennen wir es coll), die einen privaten Vektor von Punkten oder Pixeln hat. Wenn eine Instanz von coll Pixel enthält, möchte ich, dass sie eine Methode toArray() hat, die ihren Vektor von Pixeln in ein Array von T umwandelt, das den Inhalt des Vektors darstellt.
Ich würde dies mit Vererbung tun: dh, ich könnte eine Basisklasse coll machen, die einen Vektor von Punkten und eine abgeleitete Klasse enthält, die die Extra-Methode enthält, aber dann scheint ich auf Probleme zu stoßen, da Pixel ein ist Klassenvorlage.
Hat jemand Vorschläge? Könnte ich das irgendwie tun, indem ich coll eine Klassenvorlage mache?
Ich denke, dass 'coll' auch eine Vorlagenklasse sein sollte. Dann können Sie 'coll' für Punkte und für Pixel teilweise spezialisieren. – Philipp
Ist ein Pixel eine Menge von Koordinaten (d. H. Erbt "Punkt") oder hat er Koordinaten (d. H. Enthält eine Instanz eines Punkts)? – Patrick
Erbt von Punkt. – amc