期待';'创建struct类型的变量时出错

时间:2015-04-17 04:22:18

标签: c++

代码如下:

#include <cstdio>
#include <iostream>
#include <deque>

struct vertex {
    bool visited;
    int value;
    int distance;
};

int main() {

    int key_value;
    std::cin >> key_value;

    int num_vertices;
    std::cin >> num_vertices;

    int** matrix;
    matrix = new int*[num_vertices];
    for (int i = 0; i < num_vertices; i++) {
        matrix[i] = new int[num_vertices];
    }

    vertex* vertices;
    vertices = new vertex[num_vertices];

    std::deque<vertex> queue;

    int vertex, value;
    while(std::cin >> vertex >> value) {
        vertices[vertex].value = value;
        int num_edges;
        std::cin >> num_edges;
        for(int i = 0; i < num_edges; i++) {
            int edge_to;
            std::cin >> edge_to;
            matrix[vertex][edge_to] = 1;
        }
    }

    //BFS

    vertices[0].visited = true;
    vertices[0].distance = 0;
    queue.push_back(vertices[0]);

    while(!queue.empty()) {
        vertex cur_v;
        cur_v = queue.front();
        queue.pop_front();
        for(int i = 1; i < num_vertices; i++) {
            if(matrix[cur_v, i]) {
                if(!vertices[i].visited) {
                    vertices[i].visited = true;
                    queue.push_back(vertices[i]);
                }
            }
        }
    }

    return(0);
}

我收到以下错误,

  

search_gilene_matt.cc:在函数'int main()'中:   search_gilene_matt.cc:42:错误:预期';'在'cur_v'之前   search_gilene_matt.cc:43:错误:'cur_v'未在此范围内声明

有人可以了解导致这种情况的原因吗?

我找了一个丢失的分号,但我不知道它会在哪里。

2 个答案:

答案 0 :(得分:5)

您似乎宣布int vertex隐藏了您的struct vertex。重命名int并且你很好。

答案 1 :(得分:3)

当你写:

int vertex, value;

然后vertex成为变量的名称,只要该变量在范围内。

后来你写道:

vertex cur_v;

失败,因为vertex是变量的名称。

要解决此问题,请将您的变量命名为不同的名称,或使用struct vertex来引用该类型。