在C++中将对象向量的引用作为参数传递
Passing reference of vector of objects as arguments in C++
我正在尝试构建一个函数,其中参数是对对象向量的引用。在这种情况下,对象的名称是"obj",它是类"Example"的实例,并且是向量类中定义的向量。对象具有像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()中,我调用函数的那一行:"没有匹配的函数可以调用‘calculate’"。在这里,我假设这个错误与obj不仅仅是一个对象,而是一个对象向量这一事实有关,所以我应该以某种方式改变这个论点。但到目前为止,我还没能纠正这一点。
总之,我想把一个对象向量作为引用传递给一个函数,因为我想能够在函数内部更改对象的一个成员。
提前谢谢。
我想把一个对象向量传递给一个函数作为参考
这样做:
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);
}
我相信你希望你的函数是
void calculate(vector<Example> &obj, int M)
而不是
void calculate(Example &obj, int M)
obj[i]
"obj"不是数组。您需要将其声明为:
void calculate(Example* obj, int M)
更确切地说是
void calculate(vector<Example>& v)
相关文章:
- 使用引用与指针将数组作为参数传递
- 为什么我不能将引用作为 std::async 的函数参数传递
- 如何将指针变量作为引用参数传递?
- 移动类的成员作为常量引用参数传递
- 通过引用函数传递指针参数是什么意思?
- 当数组大小在C++中未知时,如何在运行时将对字符串数组的引用作为函数参数传递?
- 为什么我们不允许将纯引用参数传递给 std::thread,但允许传递原始指针?
- 将非左值作为常量引用参数传递.临时是在本地作用域还是在调用方作用域中创建的?
- 将双指针作为参数传递给需要引用 std::vector <double>的函数
- 关于模板化函数上传递的右值引用和传递的参数的歧义
- 如何通过引用将参数传递给模板类的成员函数?
- 如何将对向量的引用作为可变参数传递?
- 将unique_ptr作为引用参数或常量传递unique_ptr引用
- 我可以更改将引用参数传递到指针中并使其正常工作的函数的输入(C、C++)吗?
- C++:将引用作为参数传递,但该函数不接受引用作为参数
- 将引用参数传递给程序集函数
- 如何强制转换变量成员以将其作为函数的引用参数传递
- 将std::vector作为输入/输出引用参数传递时丢失了一些数据
- 将引用参数传递给值参数
- 使用引用参数传递引用意外行为