代码之家  ›  专栏  ›  技术社区  ›  Josh Curren

在C++中插入列表时没有匹配函数错误

  •  1
  • Josh Curren  · 技术社区  · 15 年前

    当我试图把一个项目插入到一个列表(C++中)时,我得到了一个错误。错误是没有用于调用insert()的匹配函数。我还尝试了push_front(),但得到了相同的错误。

    以下是错误消息:

    main.cpp:38: error: no matching function for call to ‘std::list<Salesperson, std::allocator<Salesperson> >::insert(Salesperson&)’
        /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/list.tcc:99: note: candidates are: std::_List_iterator<_Tp> std::list<_Tp, _Alloc>::insert(std::_List_iterator<_Tp>, const _Tp&) [with _Tp = Salesperson, _Alloc = std::allocator<Salesperson>]
        /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_list.h:961: note:                 void std::list<_Tp, _Alloc>::insert(std::_List_iterator<_Tp>, size_t, const _Tp&) [with _Tp = Salesperson, _Alloc = std::allocator<Salesperson>]
    

    代码如下:

    #include <stdlib.h>
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <list>
    #include "Salesperson.h"
    #include "Salesperson.cpp"
    #include "OrderedList.h"
    #include "OrderedList.cpp"
    using namespace std;
    
    int main(int argc, char** argv)
    {
        cout << "\n------------ Asn 8 - Sales Report ------------" << endl;
    
        list<Salesperson> s;
        int id;
        string fName, lName;
        int numOfSales;
        string year;
    
        std::ifstream input("Sales.txt");
        while( !std::getline(input, year, ',').eof() )
        {
            input >> id;
            input >> lName;
            input >> fName;
            input >> numOfSales;
            Salesperson sp = Salesperson( id, fName, lName );
            s.insert( sp ); //THIS IS LINE 38 **************************
            //s.push_front( sp ); //ALSO GETS THE SAME ERROR
    
    
            for( int i = 0; i < numOfSales; i++ )
            {
                double sale;
                input >> sale;
                sp.sales.insert( sale );
            }
        }
    
        cout << endl;
        return (EXIT_SUCCESS);
    }
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   RichieHindle    15 年前

    insert 需要一个位置和一个元素-你是说 push_front push_back ?