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

关于一个类类型的定义解决办法

2012-05-09 
关于一个类类型的定义class Test{public:Test(){cout void endl}void fun(){}}void main(){T

关于一个类类型的定义
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();//多于一个对象


[解决办法]

探讨

引用:

Test b;
b.fun();


谢谢回答哈,我想问下 为何 Test b();编译不实现为b调用默认构造函数初始化呢?
编译器这样做 有没有什么特别的原因?

热点排行