gpt4 book ai didi

c++ - 如何使用getter函数将列表推回列表?

转载 作者:行者123 更新时间:2023-12-02 10:07:36 26 4
gpt4 key购买 nike

我有这样的getter setter函数。

void Student::setStudentName(std::__cxx11::string b)
{
cout<<"Enter the student name"<<endl;
cin >> studentName;
int size = b.size();
if(size > 0 && size<20)
studentName = b;
else
cout<<"Please enter a name between 1-20 char"<<endl;
}
string Student::getStudentName() const
{
return studentName;
}

我想做的是使用getter函数添加到列表中。
void Student::addStudent()
{
int studentAdd;
cout<<"How many student do you want to add?"<<endl;
cin>>studentAdd;

for(int i=0;i<studentAdd;++i)
{
setStudentName("a");
getStudentList().push_back(getStudentName());
}
}

我这样尝试过
getStudentList().push_back(getStudentName()); 

此代码无效。可能是什么问题呢?

这是列表的 getter / setter
void Student::setStudentList(list<string> a)
{
studentList = a;
}
list<string> Student::getStudentList() const
{
return studentList;
}

最佳答案

问题在于getStudentList的返回类型。照原样,您要返回它的副本,然后附加到临时副本,然后立即将其销毁。

您想要的是返回对实际列表的引用。

list<string> &Student::getStudentList() {
return studentList;
}

然后,您不应该创建这样的函数 const,因为它(可能是) mutator
const的问题有时可以通过 getStudentList的两个覆盖来处理。一种在返回类型和 cv-qualifier中均为 const,而在两种类型中都不是const。
// accessor override
const list<string> &Student::getStudentList() const {
return studentList;
}

// mutator override
list<string> &Student::getStudentList() {
return studentList;
}

这使得可以在不同的 call 方案中推断出适当的替代。

关于c++ - 如何使用getter函数将列表推回列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com