一个奇怪的结构体编译出错问题
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;