gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:54 25 4
gpt4 key购买 nike

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

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

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

关于c++ - 派生类可以在类声明中定义基类数组的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com