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

一个奇怪的结构体编译出错有关问题

2012-02-17 
一个奇怪的结构体编译出错问题structTest{Test(int){}Test(){}voidfun(){}}intmain(){Testa(1)//tag1a.f

一个奇怪的结构体编译出错问题
struct   Test{
Test(int){}
Test(){}
void   fun(){}
};

int   main(){
Test   a(1);//tag   1
a.fun();//tag   2
Test   b();//tag   3
b.fun();//tag   4
  return   0;

}
++++++++++++++++++++++++++++++++++++++++++++++++
如上tag   3是不正确的,但编译器不会报错,到tag   4时报错:error   C2228:   left   of   '.fun '   must   have   class/struct/union   type;
将tag   3改为Test   b;则编译链接成功,why?
最好能说详细点,谢谢!


[解决办法]
Test b();//tag 3被编译器认为是返回值为Test类型的函数

而不是对象了。

所以下面紧接着b.fun()就错了
[解决办法]
Test b();//这个成了函数声明,而不是定义变量

改称 Test b;

热点排行