我正在尝试计算条目的平均值,但是由于某种原因,我遇到了意外错误:

error: no match for ‘operator+’ (operand types are ‘double’ and ‘const OrderBookEntry’)
  __init = __init + *__first;"
              ~~~~~~~^~~~~~~~~~
我是C++的新手,并尝试解决了一段时间,但没有任何效果。
int MerkelBot::predictMarketPrice()
{
    int prediction = 0;
    for (std::string const& p : orderBook.getKnownProducts())
    {
        std::cout << "Product: " << p << std::endl;
        std::vector<OrderBookEntry> entries = orderBook.getOrders(OrderBookType::ask,
                                                                p, currentTime);

    double sum = accumulate(entries.cbegin(), entries.cend(), 0.0);
    prediction =  sum / entries.size();
    std::cout << "Price Prediction is: " << prediction << std::endl;
    }
}
The error

最佳答案

问题是您要编译器添加OrderBookEntry对象,但是编译器不知道该怎么做。
您必须通过添加OrderBookEntry对象来告诉编译器您的意思。一种方法是重载operator+

double operator+(double total, const OrderBookEntry& x)
{
    // your code here that adds x to total
}
但是可能更好的方法是忘记std::accumulate,而只编写一个for循环来执行加法操作。
double sum = 0.0;
for (auto const& e : entries)
    sum += e.something(); // your code here
something替换为您要累加的内容。

关于c++ - 使用累加时,C++中的operator +不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62751231/

10-09 18:16