Я пытаюсь передать пользовательский функтор в std :: map.
Итак, я объявляю следующий функтор и класс, членом которого является карта в файле HEADER.
class Comp {
bool g;
public:
Comp(bool greater) : g(greater) {}
bool operator()(float lhs, float rhs) const {
if (g) return lhs >= rhs;
return lhs < rhs;
}
};
class OrderBook {
u_char OrderBookType;
std::map<float, std::vector<float*>, Comp> OrderBookData;
public:
OrderBook(u_char);
float best_bid_ask(int);
};
И в файле. cpp я определяю конструктор для класса OrderBook следующим образом для инициализации std :: map.
OrderBook::OrderBook(u_char bookType) {
OrderBookType = bookType;
OrderBookData(Comp(bookType == 'B'));
}
Однако, когда я пытаюсь скомпилировать программу, я сталкиваюсь с ошибка типа «тип не предоставляет оператора вызова»:
error: type 'std::map<float, std::vector<float *>, Comp>' does not provide a call operator
OrderBookData(Comp(bookType == 'B'));
Я очень не понимаю, почему я столкнулся с этой ошибкой.
Любая помощь приветствуется.