关于一个类类型的定义
class Test
{
public:
Test(){cout << "void" << endl;};
void fun(){;};
};
void main()
{
Test b();
b.fun();
}
编译器会报错: error C2228: left of '.fun' must have class/struct/union;
为何?
但我换成:
Test *b = new b();
b->fun();
就可以了;
编译器做了哪些事情?
[解决办法]
Test b();
写错了把,应该 Test b;
[解决办法]
Test b;
b.fun();
[解决办法]
估计编译器把main里面的第一句当成了函数声明Test b(void);了。
建议(2选1):
1:
Test b;//后面的括号去掉。
2:
Test b(), b2();//多于一个对象
[解决办法]