У меня есть функция, которая должна возвращать отсортированный список на основе некоторых входных параметров. Я выбрал std::priority_queue
, чтобы сохранить этот список.Возврат priority_queue с пользовательским компаратором
Но компилятор дает мне ошибку, которую я не узнаю. Вот код, у меня есть:
struct DepthCompare {
bool operator()
(const struct inst *&lhs, const struct inst *&rhs) const
{
return lhs->depth < rhs->depth;
}
};
typedef priority_queue<struct inst*> HeuristicList;
HeuristicList getHeuristicList(struct BasicBlock &) {
HeuristicList ret(DepthCompare);
return ret;
}
Компилятор говорит, что в conversion from 'HeuristicList (*)(DepthCompare)' to non-scalar type 'HeuristicList' requested
по линии возвращения инструкции.
Не похоже, что я пытаюсь вернуть указатель. Что случилось?
Спасибо. У меня есть намного больше чтения, чтобы все это понять. Исходя из Java, я несколько раз обходил анонимные объекты и думал, что C++ будет таким же. И, конечно, я оставил тело 'getHeuristicList()' для ясности, поэтому я не буду возвращать его немедленно. Мне нужно руководство по интерпретации сообщений об ошибках gcc! – Mike