gpt4 book ai didi

vector 中的 C++ 模板类对象

转载 作者:行者123 更新时间:2023-11-28 05:56:17 25 4
gpt4 key购买 nike

我试图为控制台使用实现一个通用的 Tableview。

所以我试着让一切都通用

  • 模板类“Cell”,它保存来自一个特定 Cell 的数据
  • 模板类“Column”,在其类型的 vector 中包含多个“Cells”(一列一种类型)

现在,我尝试将所有不同类型的列存储在一个 vector 中。这自然不行。我的下一步是尝试构建一种抽象//接口(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;

拜托,你能帮帮我吗?

最佳答案

所以。我找到了解决方案。

主要问题是,接口(interface)包含特定方法 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);

现在可以了。

谢谢你的时间..

关于 vector 中的 C++ 模板类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com