[英]C++ template-class Objects in vector
我嘗試為控制台使用實現通用Tableview。
所以我試圖使一切通用
現在,我嘗試將所有不同類型的列存儲在向量中。 自然這是行不通的。 我的下一步是嘗試建立一種abstract // interface類,它將作為模板化列的基類。
class IColum{
public:
virtual ~IColum(){};
virtual void setHeading(string head) =0;
virtual void setData(vector<double*> data)=0;
virtual void setData(vector<string *> data)=0;
virtual void print(int n)=0;
virtual vector<size_t> sort(bool mode) =0;
virtual void reorder(vector<size_t> rf)=0;
};
template<typename T>
class Colum : public IColum{
public:
Colum(){
cout<<"TEST";
};
Colum(string n,vector<T*> data);
Colum(string n,vector<T*> data, int f);
void setHeading(string head);
void setData(vector<T*> data);
void print(int n);
vector<size_t> sort(bool mode);
void reorder(vector<size_t> rf);
~Colum(){};
private:
string name;
vector<Cell<T>> rows; //templated cell-class
};
//Implementation of the functions
后來我想要這個:
IColum * colum1 = new Colum<string>();
vector<IColum*> colums;
colums.push_back(colum1);
vector<IColum *> colums;
拜托,請您能幫幫我嗎?
所以。 我找到了解決方案。
主要的問題是,該接口包含特定的方法, virtual void setData(vector<double*> data)=0;
virtual void setData(vector<string*> data)=0;
實際上,這是泛型的,所以我刪除了它。
Colum<string> * colum1 = new Colum<string>();
Colum<double> * colum2 = new Colum<double>();
vector<IColum*> colums;
colums.push_back(colum1);
colums.push_back(colum2);
現在可以了。
謝謝你的時間..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.