传递矢量作为函数的引用

时间:2017-03-27 15:02:04

标签: c++ vector rvalue-reference rvalue

我试图完成将矢量传递给函数作为参考的简单任务,并修改函数中的矢量。 但是,我通过以下示例得到了一些非常难以理解的错误:

// data.h
class data {
public:
  std::string a;
  double b;
  uint8_t c;
};

我们在MainWindow类中创建了这些数据对象的向量:

// MainWindow.h
class MainWindow {
public:
  std::vector<data> vec;
  void needs_vec(std::vector<data> &vec);
};

下面我已经获得了troublemaker函数,以及MainWindow对象的构造函数,这是所有东西汇集在一起​​的。

// other_file.h
void needs_vec(std::vector<data> &vec) {
  for (auto &vec: vec) {
    vec.b = get_a_number();
  }
};

// MainWindow.cpp
MainWindow::MainWindow() {
  // Read a configuration file and initialize the vector
  this->vec = read_config();

  // Try to apply our function
  needs_vec(this->vec);

  // Continue doing other things
};

我也尝试过使用右值参考,但我遇到了类似的结果:一个难以辨认的二十页错误信息。

1 个答案:

答案 0 :(得分:1)

您的班级data的{​​{1}}值不是double,而是double

应用以下更改:

b

此外,您是否使用右括号和分号void MainWindow::needs_vec(std::vector<data> &vec) { for (auto &vec: vec) { // Change the name here vec.b = get_a_number(); } } 关闭班级?

E.g

};