函数中的向量

Vectors in functions

我的 .cpp 文件中有这些代码行:

    void Student::operator+=(const Subject &a){
        vector<Subject> v;
        v.push_back(a);
    }

我重载了这个运算符:

    ostream &operator<<(ostream &output, Student &a){
        vector<Subject>v;
        /*for (auto& a:v){
            output<<a<<endl;
        }
        */
        cout<<v.size()<<endl;
        return output;
    }

看起来,当我尝试打印向量的元素时,它显示它是空的。 它的v.size()是0.

虽然我已经注释掉了另一种显示元素的方式,但它也不起作用。 我不知道为什么我的向量在函数中使用时会丢失大小。 有什么可能的帮助吗?

您的向量 vector<Subject> v; 在每个运算符实现函数中,因此仅在每个函数的本地生成,并在其结束时被销毁。 考虑一次声明此向量,作为 Student class.

的私有成员