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

时间:2016-01-28 21:34:04

标签: c++ arrays dynamic-arrays

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

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

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

在定义析构函数时,是否需要遍历数组以删除其元素,还是由默认构造函数处理?

1 个答案:

答案 0 :(得分:1)

你见过模板吗?

template <unsigned int NUM_EDGES>
class Polygon {
...
private:
    Edge[NUM_EDGES] e;
};

class Triangle : public Polygon<3> {
};

如果这样声明,将为每个数组元素调用Edge()~Edge()

相关问题