【发布时间】:2023-03-06 08:13:01
【问题描述】:
我尝试实现一个通用的 Tableview 以供控制台使用。
所以我试着让一切都通用
- 模板类“Cell”,保存来自一个特定 Cell 的数据
- 模板类“Column”,在其类型的向量中保存多个“单元格”(一列一类型)
现在,我尝试将所有不同类型的 Column 存储在一个向量中。这自然是行不通的。我的下一步是,我尝试构建一种抽象//接口类,它将作为模板列的基类。
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;
拜托,你能帮帮我吗?
【问题讨论】:
-
有什么问题?更具体。
-
vector<IColum *>有什么问题?Cell和vector<IColum* >有什么关系?还是您的整个设计遇到了障碍? -
vector<IColum *>没有问题,主要问题是:我无法创建特定的列,例如:IColum * colum1 = new Colum<string>();vector<ISpalte*> columns;columns.push_back(colum1); -
“我不能”和“它不起作用”不够具体。您必须提供错误消息。
标签: c++ templates pointers vector interface