簡體   English   中英

向量中的C ++模板類對象

[英]C++ template-class Objects in vector

我嘗試為控制台使用實現通用Tableview。

所以我試圖使一切通用

  • 模板類“ Cell”,用於保存來自一個特定Cell的數據
  • 模板類“列”,在其類型的向量中包含幾個“單元格”(一個列,一個類型)

現在,我嘗試將所有不同類型的列存儲在向量中。 自然這是行不通的。 我的下一步是嘗試建立一種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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM