将对象从向量插入到指针列表

Inserting an object from a vector to a list of pointers

我正在尝试将对象从向量推回指针列表。不幸的是,我的方法不能正常工作。

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&)'". 

如果我没记错的话,我需要在主函数中调用打印方法(*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;
    }
}

这一行:

l.push_back(*itt);

是传一个CStudent&,而l只传一个CStudent*。将该行更改为

l.push_back(&*itt);

将改为传递存储的 CStudent 项的地址(指针)。