[英]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.