在课堂上初始化矢量

时间:2016-12-09 18:35:09

标签: c++ class oop vector

我有以下问题。我有一节课,比如说

class MyClass{
public:
  class MyNumber;
  MyClass(char const *filename);
  class MyNumber{
  public:
    MyNumber(int n) : n(n) {}
  private:
    int n;
  };

private:
  std::vector<MyNumber> mynumbers
};

现在我想为MyClass类编写一个构造函数,它读取一个文件并根据文件的内容初始化vector mynumbers。我做的是以下

MyClass::Myclass (char const * filename){
  int num = 0;
  std::string line;
  std::getline(file, line);              
  std::stringstream ss(line);              
  ss >> num; 
  mynumbers(num,MyNumber(5));

}

但我收到错误&#34;输入&#39; std :: vector&#39;不提供呼叫运营商&#34;。我也不能使用构造函数初始化列表(至少我是这么认为),因为它取决于我的输入文件我的向量有多大。 有人能告诉我这是怎么做到的吗?

1 个答案:

答案 0 :(得分:2)

只需使用方法assign

即可
mynumbers.assign(num,MyNumber(5));

至于这句话

mynumbers(num,MyNumber(5));

然后它对应于函数运算符的调用。但是,标准类std::vector没有这样的运算符。构造函数中的对象mynumbers已经创建/因此您只能为其分配新值。你不能再次调用它的构造函数。另一方面,方法assign被重载,以至于它对应于该类的大多数构造函数。

相关问题