[英]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.