首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求大牛看编译异常

2012-09-16 
求大牛看编译错误[codeC/C++][/code]#includestdio.h#includealgorithmusing namespace stdconst in

求大牛看编译错误
[code=C/C++][/code]
#include<stdio.h>
#include<algorithm>
using namespace std;
const int MAXN= 50010;

struct Node
{
  int t,pos;
} pl[MAXN/5];

int main()
{
  int n,m,q,i;
  int pl[MAXN/5];
  while(scanf("%d%d%d",&n,&m,&q)!=EOF)
  {
  for(int k=0; k<q; k++)
  {
  scanf("%d",&pl[k].t);
  pl[k].pos=k;
  }
  }
  return 0;
}

为什么这段代码会有编译错误
[Error] C:\Users\theron\Documents\C-Free\Temp\未命名18.cpp:19: error: request for member `t' in `pl[k]', which is of non-class type `int'
[Error] C:\Users\theron\Documents\C-Free\Temp\未命名18.cpp:20: error: request for member `pos' in `pl[k]', which is of non-class type `int'


[解决办法]
int pl[MAXN/5]; 改成Node pl[MAXN/5];
[解决办法]
struct Node
{
int t;
int pos; //分开声明
} pl[MAXN/5];

int main()
{
int n,m,q,i;
//int pl[MAXN/5]; 重复定义 会把结构体的声明覆盖掉
while(scanf("%d%d%d",&n,&m,&q)!=EOF)
{
for(int k=0; k<q; k++)
{
scanf("%d",&pl[k].t);
pl[k].pos=k;
}
}
return 0;
}
[解决办法]
int pl[MAXN/5];数组名p1和你定义的结构体变量名同名,根据局部变量替换全局变量的原则,那么你在main里对p1的操作都是对局部变量的操作。

热点排行