[在此处输入图片说明]这里iam面临问题我会附上错误截图到它请帮我解决这些警告提前谢谢我不知道如何处理这些警告请求帮助
我重复上面的帖子来发布这个问题它不允许我只使用上面的文字
这里iam面临问题我会附上错误截图给它请帮我解决这些警告提前谢谢我不知道如何处理这些警告请求帮助
#include <iostream>
#include <cstdlib>
#include <list>
#include <math.h>
using namespace std;
int paths[50][50],m,hop[50],trusted[50][50],q[50];
class Graph
{
int V;
list<int> *adj;
void printAllPathsUtil(int , int , bool [], int [], int &);
public:
Graph(int V);
void addEdge(int u, int v);
void printAllPaths(int s, int d);
};
Graph::Graph(int V)
{
this->V = V;
adj = new list<int>[V];
}
void Graph::addEdge(int u, int v)
{
adj[u].push_back(v);
}
void Graph::printAllPaths(int s, int d)
{
bool *visited = new bool[V];
int *path = new int[V];
int path_index = 0;
for (int i = 0; i < V; i++)
visited[i] = false;
printAllPathsUtil(s, d, visited, path, path_index);
}
void Graph::printAllPathsUtil(int u, int d, bool visited[],
int path[], int &path_index)
{
visited[u] = true;
path[path_index] = u;
path_index++;
if (u == d)
{
for (int i = 0; i<path_index; i++){
//cout << path[i] << " ";
paths[m][i]=path[i];
hop[m]++;
}
//cout << endl;
//paths[m][path_index]=9999;
m++;
}
else
{
list<int>::iterator i;
for (i = adj[u].begin(); i != adj[u].end(); ++i)
if (!visited[*i])
printAllPathsUtil(*i, d, visited, path, path_index);
}
path_index--;
visited[u] = false;
}
class vehicle {
public:
float id,x,y,velocity;
int rou_tab[50],no_vehicles,tf,wait;
};
class RSU {
public:
int x,y,no_vehicles,next,tf,wait;
int id,rou_tab[50];
};
int main() {
srand(time(0));
int n,i,j,k,l,small=9999,result,route[50][50],v=0,x=0,s,d,a;
int source,dest;
float cost[50];
std::cout << "enter the numbrer of vehicle" << '\n';
std::cin >> n;
vehicle node[n];
Graph g(n+4);
std::cout << "id"<<'\t'<<"x"<<'\t' <<"y"<<'\t'<<"velocity" <<'\n';
for (i = 0; i < n; i++) {
node[i].id=i;
node[i].x = rand()% 1000;
node[i].y= rand()%30;
node[i].velocity=80;
node[i].no_vehicles=0;
//std::cout << node[i].id << '\t'<<node[i].x<<'\t'<<node[i].y<<'\t'<<node[i].velocity<<'\n';
}
//std::cout << '\n';
RSU rsu[4];
for (i = 0; i < 4; i++) {
rsu[i].id=(n+i);
rsu[i].x = 250*i;
rsu[i].y = 0;
rsu[i].no_vehicles=0;
rsu[i].wait=rand()%10;
if(i==3)
rsu[i].next=0;
else
rsu[i].next=i+1;
// std::cout << rsu[i].id << '\t'<<rsu[i].x<<'\t'<<rsu[i].y<<'\n';
}
/*---------------------------------decleration---------------------------*/
// int v;
//for(v=0;v<25;v++){
// std::cout << "id"<<'\t'<<"x"<<'\t' <<"y"<<'\t'<<"velocity" <<'\n';
for(i=0;i<n;i++){
node[i].no_vehicles=0;
std::cout << node[i].id << '\t'<<node[i].x<<'\t'<<node[i].y<<'\n';
}
std::cout << '\n';
for(j=0;j<4;j++)
rsu[j].no_vehicles=0;
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < n; j++) {
if(i!=j){
result=(int)sqrt((node[i].x-node[j].x)*(node[i].x-node[j].x)+(node[i].y-node[j].y)*(node[i].y-node[j].y));
if(result<50){
node[i].rou_tab[node[i].no_vehicles]=node[j].id;
node[i].no_vehicles++;
}
}
}
small=9999;
for (size_t j = 0; j < 4; j++) {
result=(int)sqrt((node[i].x-rsu[j].x)*(node[i].x-rsu[j].x)+(node[i].y-rsu[j].y)*(node[i].y-rsu[j].y));
if (result<small) {
small=result;
k=j;
}
}
node[i].rou_tab[node[i].no_vehicles]=rsu[k].id;
node[i].no_vehicles++;
}
//std::cout << '\n';
for (size_t i = 0; i < n; i++) {
std::cout << node[i].id << '\t';
for (size_t j = 0; j < node[i].no_vehicles; j++) {
std::cout << node[i].rou_tab[j] << '\t';
g.addEdge(node[i].id,node[i].rou_tab[j]);
}
std::cout << '\n';
}
for (size_t i = 0; i <n; i++) {
small=9999;
for (size_t j = 0; j < 4; j++) {
result=(int)sqrt((node[i].x-rsu[j].x)*(node[i].x-rsu[j].x)+(node[i].y-rsu[j].y)*(node[i].y-rsu[j].y));
if (result<150) {
small=result;
k=j;
}
}
rsu[k].rou_tab[rsu[k].no_vehicles]=node[i].id;
rsu[k].no_vehicles++;
}
std::cout << '\n';
for (size_t i = 0; i < 4; i++) {
std::cout << rsu[i].id << '\t';
for (size_t j = 0; j < rsu[i].no_vehicles; j++) {
std::cout << rsu[i].rou_tab[j] << '\t';
g.addEdge(rsu[i].id,rsu[i].rou_tab[j]);
}
std::cout << '\n';
}
for (size_t i = 0; i < 4; i++) {
for (size_t j = 0; j < 4; j++) {
if(i!=j)
g.addEdge(rsu[i].id,rsu[j].id);
}
}
/*------------------------------routing table complete---------------------*/
//if(v==0){
std::cout << "entre the source node" << '\n';
std::cin >> source;
std::cout << "enter the destination source" << '\n';
std::cin >> dest;
//}
if((source<n)&&(dest<n)){
g.printAllPaths(source, dest);
for (size_t i = 0; i < n; i++) {
node[i].wait=11;//rand()%20;
}
std::cout << "available paths are " << '\n';
for (size_t i = 0; i < m ; i++) {
for (size_t j = 0; j < hop[i]; j++) {
std::cout << paths[i][j] << '\t';
}
std::cout << '\n';
}
a=0;
for (size_t s = 0; s < m; s++) {
k=0;
for (size_t d = 1; d < hop[s]-1; d++) {
if(paths[s][d]<n){
if(node[paths[s][d]].wait>10){
k++;
break;
}
if(k==0){
for (size_t s = 0; s < hop[s]; s++) {
trusted[a][d]=paths[s][d];
}
q[a]=hop[s];
a++;
}
}
}
}
for (size_t s = 0; s <= a; s++) {
for (size_t d = 0; d < q[s]; d++) {
std::cout << trusted[s][d] << '\t';
}
std::cout << '\n';
}
}
else
{
std::cout << "invalid creadetial" << '\n';
}
return 0;
}
这是错误消息,我使用的是gcc版本5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.9):
prakash@prakash:~/Desktop$ g++ final1.cpp -o x
final1.cpp: In function ‘int main()’:
final1.cpp:217:22: warning: name lookup of ‘s’ changed
q[a]=hop[s];
^
final1.cpp:205:17: warning: matches this ‘s’ under ISO standard rules
for (size_t s = 0; s < m; s++) {
^
final1.cpp:214:25: warning: matches this ‘s’ under old rules
for (size_t s = 0; s < hop[s]; s++) {*/
答案 0 :(得分:1)
在Old Days™中,在for
循环中声明的变量的范围不会在循环体的末尾结束,而是扩展出循环所在的块。所以你可以在下面的代码中访问它。在1998年标准化的C ++中,循环控制变量的范围在循环结束时结束。
因此,对于旧规则,使用s
的语句将引用上方s
中的for
,但使用标准C ++ s
不在范围内,因此,使用是指外循环中的s
。
如果你告诉g ++更符合标准,那么警告可能会消失,例如:使用选项使用g ++指定-pedantic-errors
。-std=c++11
或更高版本的标准来禁止警告。