我目前有两个类: item
和catalog
; 后者包含了一个item
列表以及一些处理它们的方法:
class item {
int index;
vector<item*> related_items;
// other member variables and functions
}
class catalog {
size_t length;
item* items;
public:
catalog(size_t l);
~catalog(); // delete[] items;
// other member variables and functions
}
catalog::catalog(size_t l) {
items = new item[length = l];
// Set properties of new items
}
我认为,即使items
是一个vector<item>
,也不会有任何区别。部分item
的初始化,例如填充列表related_items
,需要完整的item
集合,因此在catalog
构造函数中完成。
现在,我想定义新的类:book
表示特定类型的item
,而library
是一种包含book
的catalog
类型。我希望library
构造函数分配内存以容纳某个数量的book
,然后按照与catalog
完全相同的方式初始化从item
继承的这些book
成员。接下来,它将进一步初始化book
的其余成员。
我的最初想法是使它们成为item
和catalog
的派生类。但由于目前情况下,library
无法作为catalog
的派生类,因为catalog
具有指向基类对象数组的指针。实现这种结构的“最佳”方法是什么?