派生类是否可以在类声明中定义基类数组的大小



我有一个抽象类,它有一个数组数据成员,但大小只有派生类知道。

这是静态常量理想的类外声明赋值,还是有办法指定此常量数据成员必须由派生类定义?有没有办法使基类数组成为正确的数组,而不是动态数组?

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()

最新更新