bruceteenbruceteen.blog.chinaunix.net
bruceteen
全部博文(158)
2012年(158)
CU官方博
gaokeke1
cdx08222
ichao121
Bsolar
tomcodin
xiao0613
tonyxuxu
redman27
ximiligi
分类: C/C++
2012-11-20 10:42:22
上一篇:VS2005中enum的bug
下一篇:^_^ 编译器对标准支持的两个谣言
网友评论2012-11-20 10:43:33
周星星 明白了,但g++中也不冲突: struct foo { int foo; void bar() { typeid( foo ); // 成员名称 typeid( class foo ); // 类名称 typeid( ::foo ); // 类名称 } };
网友评论2012-11-20 10:43:22
pAnic 我不知道其他编译器怎么处理,这里是VC6的代码,成员变量和类名一致会导致二义性。 class foo { //int foo; void test() { std::cout << typeid(foo).name() //*@#%$(**&%#$%^ << std::endl; } };
网友评论2012-11-20 10:43:13
周星星 不明白,能不能举个例子给我。 我觉得g++的做法很正确,因为C语言是允许的,那它就可以确保兼容C标准。 二来,C++标准之所以不允许直接调用构造函数估计就是因为这个原因。
网友评论2012-11-20 10:42:58
pAnic 个人认为不合法。 例如foo的成员函数使用RTTI动态获取类型信息,当参数为foo的时候会产生二义性。
登录 注册