J'ai une fonction qui doit retourner une liste triée en fonction de certains paramètres d'entrée. J'ai sélectionné un std::priority_queue
pour contenir cette liste.Retour d'une file d'attente prioritaire avec un comparateur personnalisé
Mais le compilateur me donne une erreur que je ne reconnais pas. Voici le code que j'ai:
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;
}
Le compilateur dit qu'un conversion from 'HeuristicList (*)(DepthCompare)' to non-scalar type 'HeuristicList' requested
sur la ligne de la déclaration de retour.
Il ne semble pas que j'essaie de retourner un pointeur. Qu'est-ce qui ne va pas?
Merci. J'ai beaucoup plus de lecture à faire pour comprendre tout cela. Venant de Java, j'ai passé quelques fois des objets anonymes, et je pensais que C++ serait la même chose. Et bien sûr, j'ai omis le corps de 'getHeuristicList()' pour plus de clarté, donc je ne vais pas le retourner immédiatement. J'ai aussi besoin d'un manuel pour interpréter les messages d'erreur gcc! – Mike