我有一个函数需要根据一些输入参数返回一个排序列表。我已选择一个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;
}
编译器说,在return语句的线路conversion from 'HeuristicList (*)(DepthCompare)' to non-scalar type 'HeuristicList' requested
。
它看起来不像我试图返回一个指针。出了什么问题?
谢谢。为了理解这一切,我有更多的阅读需要做。来自Java,我几次绕过匿名对象,并认为C++将是相同的方式。当然,为了清楚起见,我省略了`getHeuristicList()`的主体,所以我不会立即返回它。 我也需要手册来解释gcc的错误信息! – Mike 2010-12-04 17:45:57