我正在尝试将对象从向量推回到指针列表。不幸的是,我的方法无法正常工作。
list<CStudent*> averageparam(const int a, const int b)
{
list<CStudent*> l;
vector<CStudent>::iterator itt;
for (itt=students.begin();itt!=students.end();itt++)
if((*itt).average() >= a && (*itt).average() <= b)
l.push_back(*itt);
return l;
}
这是我在线l.push_back(*itt)
no matching function for call to 'std::list<CStudent*>::push_back(CStudent&)'".
如果我没弄错,我需要在main函数中调用print方法(*it)->print()
,但我不知道如何将向量中的对象插入到指针列表中。
这是main函数中的代码,它调用此方法。
list<CStudent*> l;
a=50, b=60;
for (it=uni.begin();it!=uni.end();it++)
{
l = (*it).averageparam(a,b);
if (l.empty())
cout<<"There are no students in spec."<<(*it).getspec()<<" course "<<(*it).getkurs()<<" group "<<(*it).getgrupa()<<" with average amount of points between "<<a<<" - "<<b<<endl<<endl;
else
{
cout<<"Students in spec."<<(*it).getspec()<<" course "<<(*it).getkurs()<<" group "<<(*it).getgrupa()<<" with average amount of points between "<<a<<" - "<<b<<endl;
list<CStudent>::iterator it=l.begin();
for (it=l.begin();it!=l.end();it++)
(*it).print();
cout<<endl;
}
}
答案 0 :(得分:3)
这一行:
l.push_back(*itt);
正在传递CStudent&
,而l
仅接收CStudent*
。将该行更改为
l.push_back(&*itt);
将传递存储的CStudent
项的地址(指针)。