我尝试为控制台使用实现通用Tableview。
所以我试图让一切都变得通用
现在,我尝试将所有不同类型的列存储在向量中。当然,这不会起作用。我的下一步是,我尝试构建一种抽象的//接口类,它将是模板化列的基类。
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;
拜托,请你能帮帮我吗?
答案 0 :(得分:1)
因此。我找到了解决方案。
主要问题是,界面包含特定方法
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);
现在可行。
谢谢你的时间..