我正在尝试计算条目的平均值,但是由于某种原因,我遇到了意外错误:
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/