繁体   English   中英

预期为“;” 创建结构类型变量时出错

[英]Expected a ';' error when creating a variable of struct type

代码如下:

#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'

有人可以阐明造成这种情况的原因吗?

我一直在寻找缺少的分号,但是我不知道它会在哪里。

看起来您声明了int vertex ,它隐藏了您的struct vertex 重命名int,您就很好。

当你写:

int vertex, value;

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

稍后您写:

vertex cur_v;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM