我的文件顶部有这些:
#include <queue>
typedef struct cell_s {
unsigned int x;
unsigned int y;
unsigned int ambiguity = 9;
} cell_t;
// so the priority_queue can sort the structs:
bool operator<(const cell_t &a, const cell_t &b) {
return a.ambiguity < b.ambiguity;
}
在同一个文件中,我已将priority_queue声明为类的私有成员,如下所示:
priority_queue<cell_t> blankCellQueue;
然后我有一个包含这些行的同一个类的成员函数:
cell_t cell;
cell.x = x;
cell.y = y;
blankCellQueue.push(cell);
但是Xcode在我分享的最后一行提出了这个警告:
“没有匹配的成员函数来调用'push'”。
答案 0 :(得分:2)
priority_queue
是命名空间std
的一部分。您需要使用std::priority_queue
。
答案 1 :(得分:1)
C ++ 11的std::priority_queue
是标准容器适配器, 具有成员函数push()
- 请参阅链接引用。
但是,您可能无法实现C ++标准库的实现。您应该升级到最新版本。
您可以看到代码编译here。它需要在std::
之前添加priority_queue
命名空间限定符,但我不认为这是问题的根本原因。如果是,您的编译器错误应该是不同的(或者您之前应该收到其他错误)。
答案 2 :(得分:1)
抱歉浪费了你所有的时间。我发现了这个问题。 priority_queue是我班级的成员。我试图编辑priority_queue的函数是一个我标记为const的成员函数,因为当我最初编写没有任何队列的时候,我没想到需要修改任何类变量。从const成员函数调用成员对象是一个明显的禁忌。我只是希望Xcode给出了一个稍微有用的错误消息...“从const函数调用的非const函数”这一行将是一个非常有用的消息。
由于我没有提供成员函数声明,所以任何人都很难在这里向我指出。
感谢您的帮助!