在《深度探索C++对象模型》这本书的第91页中,有这样一个代码,
#include <iostream>
using namespace std;
typedef int length;
class Point3D
{
public:
void mumble( length val ) { _val = val; }
length mumble() { return _val; }
private:
typedef float lengh;
length _val;
};
int main()
{
Point3D tmp3D;
tmp3D.mumble( 1.0 );
cout<<tmp3D.mumble()<<endl;
}
以上的代码被书中认为是错误的,因为length有冲突,《C++ primer》中也说这种写法是错误的,编译是通过不了的。但是我在vs2008中是可以编译通过的,发现类里面的 typedef float length 会被屏蔽,不管typedef float length 是在private或者public中,都是被屏蔽的,全局只有int length 起作用!这是咋回事?