OOP设计——从泛型容器继承

OOP design - inheriting from container with generic type

本文关键字:继承 设计 OOP 泛型      更新时间:2023-10-16

我有两个类,比如CollectionACollectionB,它们都继承自CollectionCollection具有std::array<GenericType>属性。我想使用CollectionA作为一个集合,其继承的std::array包含类型为ClassA (std::array<ClassA>)和CollectionB的元素,包含std::array<ClassB>。这是可能的吗?如果是,我该如何实现这个设计?

注意:如果这个问题需要模板,我不熟悉模板。

EDIT: Collection是用户定义的,所以我没有直接继承std::array

一个模板是显而易见的解决方案,从

开始
template<typename Element>
class Collection
{
protected:
    std::array<Element> arrr_;
};
class CollectionA : public Collection<ClassA>
{
};
class CollectionB : public Collection<ClassB>
{
};

这样定义

class ContainerA : public Container<ClassA> {...};
class ContainerB : public Container<ClassB> {...};
  template <class T>
  class Collection {
    protected:
      std::array<T> data_;
  };
  class CollectionA : public Collection<A> {
   /*
    you can use data_ in this class. 
    data_ will be of type std::array<T>;
   */
  };