我在迭代集合时遇到问题

I have an issue with iterating a set

本文关键字:遇到 问题 集合 迭代      更新时间:2023-10-16

我需要遍历一个集合。该集合是一组 Items 是我实现的类。我有这个错误:

error C2662: 'double Item::getUnitPrice(void)' : cannot convert 'this' pointer from 'const Item' to 'Item &'

这是我遍历集合的函数,但我在"sum+= it->getUnitPrice();"

double Customer::totalSum()
{
    double sum = 0;
    set<Item>::iterator it;
    for (it = _items.begin(); it != _items.end(); ++it)
    {
        sum += it->getUnitPrice();
    }
    return sum;
}

提前感谢!

你应该遍历你的集合:

double Customer::totalSum()
{
    double sum = 0f;
    for( std::set<Item>::iterator it = _items.begin(); it != _items.end(); ++it )
    {
        sum += (*it).totalPrice();
    }
    return sum;
}

我只是不知道如何使用集合获得单价。

double Customer::totalSum()
{
    double sum = 0;
    set<Item>::iterator begin = _items.begin();   <<< Although clever compilers can make 
    set<Item>::iterator end = _items.end();      << this a futile attempt at optimization.
    for( set<Item>::iterator iter = begin; iter != end; ++iter )
    {
       sum += it->getUnitPrice();
    }
  return sum;
}