读书人

求大牛看编译异常

发布时间: 2012-09-16 17:33:16 作者: rapoo

求大牛看编译错误
[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的操作都是对局部变量的操作。

读书人网 >C++

热点推荐