我的 .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;
}
看起来,当我尝试打印 vector 的元素时,它显示它是空的。它的 v.size() 为 0。
虽然我已经注释掉了另一种显示元素的方式,但它也不起作用。我不知道为什么我的 vector 在函数中使用时会丢失它的大小。有什么可能的帮助吗?
回答1
您的 vector vector<Subject> v;
在每个运算符实现函数中,因此仅在每个函数中本地生成,并将在其结束时被销毁。考虑将这个 vector 声明为你的 Student
类的私有成员。