我试图完成将矢量传递给函数作为参考的简单任务,并修改函数中的矢量。 但是,我通过以下示例得到了一些非常难以理解的错误:
// 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
};
我也尝试过使用右值参考,但我遇到了类似的结果:一个难以辨认的二十页错误信息。
答案 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
};