簡體   English   中英

C ++中的列表繼承

[英]List inheritance in C++

我正在做一個涉及很多多個類列表的程序。 我很確定它有一個名字,但是我真的不知道怎么稱呼它,我要做的是制作一個包含一些函數(例如元素插入,getter ...)的通用列表,所有這些列表繼承並可以使用公用列表的功能。 所以我的問題是,如果可能的話,如何舉一個例子。 我在下面做了一個標題代碼示例。

class CommonList {
  public:
        // Add some functions
        // T here is not a class I've made.
        void insere(T element);
        T getElement(int id);
  protected:
        std::map<int,T> m_map;
};

class A {
    public: A();
}

class B {
    public: B();
}

class ListA : public CommonList {
    // Tell the program that element T are ONLY object of class A.
    // Like if I would have made this.
    /*
  public:
        void insere(A element);
        A getElement(int id);
  protected:
        std::map<int,A> m_map;
    */
};

class ListB : public CommonList {
    // Same for B.
}

我很確定它有一個名字,但是我真的不知道怎么稱呼它

您要查找的單詞是模板類。

這是它的完成方式:

template <typename T>
class CommonList {
public:
    void insert(T element){
        /* Implement your insert function here */
    };
    T getElement(int id){
        /* Implement your getElement function here */
    };
protected:
    std::map<int,T> m_map;
};

然后,您可以簡單地創建該列表的任何類型,例如:

int main(){
    CommonList<int> int_list;
    my_list.insert(7);
    CommonList<double> double_list;
    my_list.insert(4.3);
}

當然,您也可以從該類繼承並根據需要覆蓋函數。

class A{}; 
class ListA : public CommonList<A>{
    // ... 
};

或作為模板

template <typename T>
class ListT : public CommonList<T>{
    // ...
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM