gpt4 book ai didi

c++ xcode上二进制表达式的无效操作数

转载 作者:太空狗 更新时间:2023-10-29 21:25:29 26 4
gpt4 key购买 nike

我对 C++ 还是有点陌生​​,只是不知道如何修复错误。我得到的错误是说“二进制表达式的操作数无效”。有谁知道如何解决这个问题?任何帮助表示赞赏!我正在使用 Xcode 4.5.2。谢谢!

[编辑] 好的。我已经更新了下面的代码。我仍然在同一行 (find()) 遇到同样的错误……但这里有一些变化……

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;
};

最佳答案

映射中的元素按照构建时设置的特定严格弱排序标准从低到高键值排序。

您需要为 Vertex 提供运算符<,例如:

bool operator<(const Vertex& lhs, const Vertex& rhs){
return lhs.node < rhs.node;
}

还有 Vertex myVertex = *new Vertex(1); 正如 David 和 selbie 提到的那样泄漏内存。看看这个链接:Why does the use of 'new' cause memory leaks?

Vertex myVertex = *new Vertex(1); 更改为 Vertex myVertex = Vertex(1);

关于c++ xcode上二进制表达式的无效操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13898239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com