我正在尝试构建一个函数,其中参数是对对象 vector 的引用。在这种情况下,对象的名称是“obj”,它是“Example”类的实例,并且是 vector 类中定义的 vector 。对象具有 x、y 和 z 等成员。
我尝试传递引用的原因是因为我想通过在函数内部使用 obj.x 和 obj.y 来更改 obj.z 的值。
#include <vector>
#include <iostream>
using namespace std;
class Example{
public:
double x;
double y;
double z;
Example()
: x(0.0),y(0.0){
}
};
void calculate(Example &obj, int M) {
for(int i = 0; i < M; i++) {
obj[i].z = obj[i].x * obj[i].y;
}
}
int main() {
vector<Example> obj;
int N = 10;
calculate(obj, N);
}
当我运行此程序时,出现以下错误:
在函数内部,我有:“类型‘Example’不提供下标运算符。” 我用谷歌搜索了一下,发现它与运算符重载和引用的使用有关。该解决方案可能与在函数内部取消引用我的对象引用有关,但我目前无法正确管理这个。
第二个错误是在函数之外,在我调用该函数的行的 main() 内部:“没有匹配的函数用于调用‘计算’”。 在这里,我假设错误与 obj 不仅仅是一个对象而是对象 vector 这一事实有关,因此我应该以某种方式更改参数。但到目前为止我还无法纠正这个问题。
所以,总而言之,我想将对象 vector 传递给函数作为引用,因为我希望能够更改函数内部对象的成员。
提前谢谢您。
最佳答案
I want to pass a vector of objects to a function as reference
所以这样做:
void calculate(vector<Example> &obj) {
for(int i = 0; i < obj.size(); i++) {
obj[i].z = obj[i].x * obj[i].y;
}
}
int main() {
vector<Example> obj;
// put some values into it...
calculate(obj);
}
关于c++ - 在 C++ 中将对象 vector 的引用作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25992241/