Tôi có hai lớp học, điểm và điểm ảnh:C++ thừa kế/mẫu câu hỏi
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;
}
Bây giờ đây là vấn đề của tôi. Tôi muốn tạo một lớp container (chúng ta hãy gọi nó là coll) có một vectơ riêng của điểm hoặc pixel. Nếu một thể hiện của coll chứa các pixel, tôi muốn nó có một phương thức toArray(), nó chuyển đổi véc-tơ của các điểm ảnh thành một mảng T đại diện cho nội dung của vectơ. Tôi sẽ làm điều này với thừa kế: ví dụ, tôi có thể tạo một coll lớp cơ sở chứa một vectơ các điểm và một lớp dẫn xuất chứa phương thức bổ sung, nhưng sau đó dường như tôi gặp phải vấn đề vì pixel là một mẫu lớp.
Có ai có đề xuất không? Tôi có thể làm điều này bằng cách nào đó bằng cách làm cho coll một mẫu lớp?
Tôi nghĩ rằng 'coll' cũng phải là một lớp mẫu. Sau đó, bạn có thể chuyên biệt một phần 'coll' cho điểm và cho điểm ảnh. – Philipp
Pixel có phải là tập hợp các tọa độ (tức là 'điểm kế thừa') hay nó có tọa độ (tức là chứa một thể hiện điểm)? – Patrick
Nó kế thừa từ điểm. – amc