我有一个抽象类,它有一个数组数据成员,但大小只有派生类知道。
这是静态常量理想的类外声明赋值,还是有办法指定此常量数据成员必须由派生类定义?有没有办法使基类数组成为正确的数组,而不是动态数组?
class Edge {
// composed of other objects
}
class Polygon {
public:
Polygon() {
edges = new Edge*[NUM_FACES];
// Go on to populate array
}
protected:
static const int NUM_FACES;
Edge** edges;
}
const int Rectangle::NUM_FACES = 4;
class Rectangle : public Polygon {
public:
Rectangle() : Polygon() {}
}
const int Triangle::NUM_FACES = 3;
class Triangle : public Polygon {
public:
Triangle() : Polygon() {}
}
当我定义析构函数时,我是否需要遍历数组以删除其元素,还是由默认构造函数处理?
你见过模板吗:
template <unsigned int NUM_EDGES>
class Polygon {
...
private:
Edge[NUM_EDGES] e;
};
class Triangle : public Polygon<3> {
};
如果这样声明,将为每个数组元素调用 Edge()
和 ~Edge()
。