派生 class 可以在 class 声明中定义基本 class 数组的大小吗?

Can a derived class define size of base class array in class declaration?

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

这是静态常量理想的class声明之外的赋值,还是有办法指定这个常量数据成员必须由派生的classes定义?有没有办法让基础 class 数组成为一个合适的数组,而不是一个动态数组?

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() 将为每个数组元素调用。