【发布时间】:2010-07-12 15:35:46
【问题描述】:
我有两个类,点和像素:
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;
}
现在这是我的问题。我想创建一个容器类(我们称之为 coll),它有一个私有的点或像素向量。如果 coll 的实例包含像素,我希望它有一个 toArray() 方法,它将其像素向量转换为表示向量内容的 T 数组。
我打算通过继承来做到这一点:即,我可以创建一个包含点向量的基类 coll 和一个包含额外方法的派生类,但是我似乎遇到了问题,因为像素是一个类模板。
有人有建议吗?我可以通过将 coll 设为类模板来以某种方式做到这一点吗?
【问题讨论】:
-
我认为
coll也应该是一个模板类。然后,您可以将coll部分专门化为点和像素。 -
像素是一组坐标(即继承“点”)还是有坐标(即包含点的实例)?
-
我认为要提出适当的设计建议,了解“coll”类的用途会很有帮助。我认为,特别是包含的私有向量的含义很重要。
标签: c++ inheritance templates oop