一段时间以来,我对此感到很沮丧,而且我似乎找不到错误在哪里(请注意,我的编译器不支持c ++ 11)
基本上,我试图构造一个优先级队列,其中每个元素包含另外两个元素。第一个元素是char向量的队列,第二个元素是评估该队列的启发式方法。
char向量队列的内容并不重要,仅仅是如下所述的启发式(更大)的评估
struct pathP
{
public:
queue<vector<char>> que;
int hue;
};
struct pathComp
{
bool comp(const pathP &s1, const pathP &s2) const
{
return s1.hue < s2.hue;
}
};
-----------------------(在我代码中其他位置的函数中)
priority_queue<pathP, vector<pathP>, pathComp> endV;
queue<vector<char>> saveQ;
pathP pathStore;
int h1, heur;
-----------------------(进一步功能)
pathStore.que = saveQ;
heur = h1;
pathStore.hue = heur;
endV.push(pathStore); //error C2064
错误c2064读取“项未求值为带有2个参数的函数” 我不确定如何解决
答案 0 :(得分:2)
struct pathComp
{
bool operator()(const pathP &s1, const pathP &s2) const
{
return s1.hue < s2.hue;
}
};
priority_queue
没有使用称为comp
的方法。相反,您应该定义一个 functor ,该类是一个覆盖operator()
的类。