打印

对象引用问题

[复制链接]
896|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-5-22 14:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, ST, se, AD, EMI
class Basket {
    typedef
bool (*Comp)(const Sales_item&,const Sales_item&);
public:
    typedef std::multiset
<Sales_item,Comp> set_type;
    typedef set_type::size_type size_type;
    typedef set_type::const_iterator const_iter;
    Basket():items(compare) {}
   
void add_item(const Sales_item &item)
    {
        items.insert(item);
    }
    size_type size(
const Sales_item &i) const
    {
        
return items.count(i);
    }
   
double total() const;
private:
    std::multiset
<Sales_item,Comp> items;
};
int main()
{
    Basket basket;
    Sales_item item1(Bulk_item(
"7-115-14554-7",99,20,0.2));
    Sales_item item2(Item_base(
"7-115-14554-8",39));
    Sales_item item3(Lds_item(
"7-115-14554-9",50,200,0.2));
    Sales_item item4(Bulk_item(
"7-115-14554-7",99,20,0.2));

    basket.add_item(item1);
    basket.add_item(item2);
    basket.add_item(item3);
    basket.add_item(item4);
    cout
<< basket.total() << endl;
   
return
0;
}



basket.add_item(item1);
basket.add_item(item2);
basket.add_item(item3);
basket.add_item(item4);
这里提示错误说没有用户定义的从Sales_item到const Sales_item的转换。。。怎么解决啊。只是用一个常引用传递实参而已。

相关帖子

沙发
dfsa| | 2012-5-22 14:38 | 只看该作者
比较奇怪,非const的变量应该是可以作为const的函数实参的。你的Sales_item结构体里面是不是比较特殊,可以考虑传参数时加上const_cast<const Sales_item>试试:
  basket.add_item(const_cast<const Sales_item>item1);
  basket.add_item(const_cast<const Sales_item>item2);
  basket.add_item(const_cast<const Sales_item>item3);
  basket.add_item(const_cast<const Sales_item>item4);

使用特权

评论回复
板凳
xsgy123| | 2012-5-22 14:46 | 只看该作者
void add_item(const Sales_item &item)
  {
  items.insert(item);
  }

insert的参数应该是非const的吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝