使用模板类

时间:2017-12-13 08:24:47

标签: c++

我想创建我的第一个文件操作模板类。更具体地说,我开始使用。

template <typename T>
class Foo
{
public:
Foo();
~Foo();

std::vector<Foo<T>> vec;

void parsing(T&v,T&filename);


};

template<typename T>
inline Foo<T>::Foo()
{
}

template<typename T>
inline Foo<T>::~Foo()
{
}

template<typename T>
inline void Foo<T>::parsing(T&v, T&filename){

std::fstream file;
file.open(filename, std::ios_base::in)
if (plik.good()){
    typename T::value_type tmp;
    while (!plik.eof()){
        plik >> tmp;
        v.push_back(tmp);
    }
    file.close();
    }
}

然后我想做那种初始化。

Foo<std::string> file;
file.parsing(vec,"file.txt");

我对模板很新,所以我有以下问题。

  1. 如何阅读/保存通用类型的文件?我的计划是读取文件,计算单词或数字,并将其推入Foo类型向量。然后在对矢量进行操作后,我想保存计数结果。

  2. 如何构造函数和变量和向量的初始化?在模板类中是否应该遵循任何特定规则?

  3. 对不起这种混乱的问题,但我不知道如何开始。 感谢所有回复。

1 个答案:

答案 0 :(得分:0)

我认为你很亲密。您希望如何使用模块的示例看起来不错,它与功能原型不匹配 像这样更改parsing()功能:

void Foo<T>::parsing(std::vector<T>& v, const std::string& filename);

关于你的问题:

  1. 您的解决方案是一种类型。只是向量不应该是Foo的向量,而是T的向量。
  2. 模板中的变量初始化与普通类中的变量没有区别。