我還是一種新的C++,我只是無法弄清楚如何解決這個錯誤。錯誤我getings說「無效的操作數到二進制表達式」。有沒有人有任何想法如何解決這個問題?任何幫助表示讚賞!我正在使用Xcode 4.5.2。謝謝!C++無效的操作數到二進制表達式在xcode
[編輯] OK。我更新了下面的代碼。我仍然得到同樣的錯誤在同一行(找到())...但這裏的變化...
Vertex myVertex = new Vertex(1);
到
Vertex myVertex(1);
而且加入運算符重載爲<
struct Vertex {
int node;
bool known;
float distance;
Vertex *path;
Vertex(int n=0, bool known=false, duuble dist=INFINITY):
node(n), known(known), distance(dist) {}
};
struct Edge {
Vertex target;
float weight;
bool directed;
Edge(Vertex v2, float w, bool dir):target(v2), weight(w), directed(dir) {}
};
class Graph {
public:
/*unrelated members are removed*/
void findVertex() {
Vertex myVertex(1);
map<Vertex, vector<Edge> >::iterator itr;
itr = edges.find(myVertex); // <--- this is the line the error seems to related to
}
friend bool operator< (const Vertex& lhs, const Vertex& rhs) {
return lhs.node < rhs.node;
}
private:
/*unrelated members are removed*/
vector<Vertex> vertices;
map<Vertex, vector<Edge> > edges;
};
您在findVertex函數中有內存泄漏。你「新」一個頂點,但從不刪除它。 – selbie
'Vertex myVertex = * new Vertex(1);'應該是'Vertex myVertex(1);' –
'find'應該如何工作而無法判斷兩個'Vertex'是否相等? –