none
multiset<item_base,comp> items(compare);为什么不对应该怎么改 RRS feed

  • 问题

  • 主函数的这个地方:multiset<item_base,comp> items(compare);为什么不对应该怎么改?谢谢!
    #include<set>
    #include<string>
    #include<iostream>
    using namespace std;
    class item_base{
    public:
    item_base(const string &book,double sales_price):isbn(book),price(sales_price){}
    item_base(const item_base &item):isbn(item.isbn),price(item.price){cout<<"
    调用item_base的拷贝构造函数"<<endl;}
    item_base& operator=(const item_base &rhs);
    string book()const {return isbn;}
    virtual double net_price(size_t n)const{return n*price;}
    ~item_base(){cout<<"
    调用item_base的析构函数"<<endl;}
    virtual item_base* clone()const{return new item_base(*this);}
    private:
    string isbn;
    protected:
    double price;
    };

    item_base& item_base::operator=(const item_base &rhs)
    {
    if(this!=&rhs){
    isbn=rhs.isbn;//rhs
    是一个从派生类对象转换而来的基类的引用所以可以访问基类的private成员
        price=rhs.price;
    }
    return *this;
    }
     inline bool compare(const item_base &lhs,const item_base &rhs)
     {
     return lhs.book()<rhs.book();
     }

    int main()
    {
    typedef bool (*comp) (const item_base&,const item_base&);
        multiset<item_base,comp> items(compare);
    return 0;
    }
     

    2009年5月8日 8:53

答案