主函数的这个地方: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;
}