C++ 预期为'';创建结构类型的变量时出错
代码如下:C++ 预期为'';创建结构类型的变量时出错,c++,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::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);
}
#包括
#包括
#包括
结构顶点{
布尔访问;
int值;
整数距离;
};
int main(){
int key_值;
标准::cin>>键值;
int num_顶点;
std::cin>>顶点数;
int**矩阵;
矩阵=新整数*[num_顶点];
对于(int i=0;i>顶点>>值){
顶点[顶点]。值=值;
int num_边;
标准::cin>>边数;
对于(int i=0;i>边缘到;
矩阵[顶点][边到]=1;
}
}
//BFS
顶点[0]。已访问=真;
顶点[0]。距离=0;
queue.push_back(顶点[0]);
而(!queue.empty()){
顶点电流;
cur_v=queue.front();
queue.pop_front();
对于(int i=1;i
我得到以下错误:
在函数“int main()”中搜索\u gilene\u matt.cc:
搜索_gilene_matt.cc:42:错误:应为“;”在“cur_v”之前
search_gilene_matt.cc:43:错误:“cur_v”未在此范围内声明
有人能解释一下是什么导致了这一切吗
我已经查找了一个缺少的分号,但我不知道它会在哪里。看起来您声明了
int-vertex
,它隐藏了您的struct-vertex
。重命名int,就可以了。当您写入:
int vertex, value;
vertex cur_v;
然后vertex
成为变量的名称,只要该变量在范围内
后来你写道:
int vertex, value;
vertex cur_v;
由于vertex
是变量的名称,因此失败
要解决此问题,请将变量命名为不同的名称,或使用
struct vertex
引用类型。代码是否正确编译和运行?IntelliSense错误可能是IDE中的一个错误,它们与程序错误不同。当您遇到编译器错误时,它们是什么?当出现编译器错误时,请始终在问题中包含完整且未经编辑的错误。同时在显示的代码中标出错误所在的行。提供一个而不是一堆点怎么样?cur\u v,我不应该使用逗号运算符。。。你想要][
。另外,编译器往往会做一些真正有用的事情——告诉你错误所在的行号。把一个大的//错误放在这里如何!
在你的代码列表中…?int vertex,value;
阴影类型vertex
这个答案很清楚,很好地解释了问题和解决方案。