Я пытаюсь найти сумму элементов в наборе, и мне было интересно, какие хорошие способы ее найти. Я построил два класса, один из которых называется Customer, и один под названием Item, я хочу написать функцию, которая будет вычислять общий платеж, который клиент должен заплатить за свои продукты, перечисленные в std :: set, из типа Item. Вот decleration моего набора:Как суммировать элементы std :: set
set<Item> _items;
Класс товара:
private:
string _name;
string _serialNumber; //consists of 5 numbers
int _count=0; //default is 1, can never be less than 1!
double _unitPrice; //always bigger than 0!
Функция в классе п суммировать цену товара:
double Item :: totalPrice() const
{
return _count*_unitPrice;
}
Вот функция, которую я пытаюсь написать, которая суммирует все мои элементы:
#include <numeric>
#include "Customer.h"
double Customer::totalSum() const
{
double sum = std::accumulate(_items.begin(), _items.end(), 0.0);
return sum;
}
Но я получаю эту ошибку: error C2893: Failed to specialize function template 'unknown-type std::plus<void>::operator()(_Ty1 &&,_Ty2 &&) const'
Improtant примечание: Класс Customer уже включает в себя заголовок пункта.
EDIT: Добавлена информация об элементе класса.
Что такое 'Товар'? Если это класс, а не просто «typedef double» или аналогичный, вам нужно сообщить компилятору, как добавить два из них вместе. –
Вы должны сказать, как добавить «Предмет» друг к другу –
Это класс, я уверен, что упомянул об этом выше. – Jokerah