c++ - 在 C++ 中将对象 vector 的引用作为参数传递

标签 c++ vector

我正在尝试构建一个函数,其中参数是对对象 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/

相关文章:

c++ - 使用 scanf 和 while 循环与 vector push_back

c++ - 如何调用用c++编写的程序调用我用c编写的DLL

C++ 为什么我的循环中断了?

java - 有效移动 vector 内容的算法

c++ - 在 C++ 中将对象存储在二维 Sprite 矩阵中

c++ - 替换 vector vector C++ 中的元素

c++ - 关于删除 C++ 指针

c++ - 为什么不能通过指针将 C++11 强类型枚举转换为基础类型?

c++ - 在 QtCreator 中逐行读取文本文件不起作用

c++ - 合并排序 C++ 实现,无法识别代码中的错误