OOP设计 - 从具有泛型类型的容器继承

时间:2013-03-19 19:30:50

标签: c++ oop class inheritance

我有两个类,比如CollectionACollectionB,都来自CollectionCollection具有std::array<GenericType>属性。我想将CollectionA用作集合,其继承的std::array包含ClassAstd::array<ClassA>)和CollectionB类型的元素,其中包含std::array<ClassB>。这是可能的,如果可以的话,我该如何实现这个设计呢?

注意:如果模板需要,我不熟悉模板。

编辑Collection是用户定义的,因此我不会直接继承std::array

3 个答案:

答案 0 :(得分:2)

模板将是明显的解决方案,从

开始
template<typename Element>
class Collection
{
protected:
    std::array<Element> arrr_;
};

class CollectionA : public Collection<ClassA>
{
};

class CollectionB : public Collection<ClassB>
{
};

希望它有所帮助...

答案 1 :(得分:1)

将它们定义为

class ContainerA : public Container<ClassA> {...};
class ContainerB : public Container<ClassB> {...};

答案 2 :(得分:0)

  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>;
   */
  };