错误C2678:二进制' ==':找不到运算符,该运算符采用类型的左侧操作数

时间:2018-02-11 19:09:12

标签: c++ error-handling find std

我试图制作一个解决基于图像的迷宫的程序。编程我在迷宫中连接顶点以创建边缘的部分(我想将迷宫变成图形)我得到了这个错误。这似乎是因为std::find,但我不知道出了什么问题。我已经尝试过搜索这个问题,但我似乎无法找到我想要的东西。

这是我的代码中出现问题的部分:

// the struct used to define the coordinates
struct pixelCoord {
int x, y;

pixelCoord(int paramx, int paramy) : x(paramx), y(paramy) {}};

{...}

std::vector<pixelCoord> vertices;

// adding vertices as pixel coordinates on my image
{...}

// initializing graph
Graph g(vertices.size());

// searching for and adding edges to graph
for (size_t k = 0; k < vertices.size(); k++) {
    int l = 1;
    while (maze_bmp.getPixel(vertices[k].x, (vertices[k].y + l))[0] == 255) {
        ptrdiff_t next_vertex_pos = std::find(vertices.begin(), vertices.end(), pixelCoord(vertices[k].x, (vertices[k].y + l))) - vertices.begin();
        //if (next_vertex_pos >= vertices.size()) {
        //  g.addEdge(k, next_vertex_pos, l);
        //  break;
        //}
        l++;
    }

同样maze_bmb.getPixel(...)只是一个函数,用于返回像素的RGB值以进行比较,而不是其他。

谢谢!

1 个答案:

答案 0 :(得分:1)

为了使用&#34; ==&#34;对于已实现的类/结构的运算符,您需要重载&#34; ==&#34;该课程的操作员。您可以查看此链接以了解有关重载运算符的更多信息:Operator Overloading