在类中使用typedef, 最好将其放在类定义的头部。
如下例:
#include
using namespace std;
typedef int LENGTH;
class Test
{
public:
//此处的x,以及get的返回值,均被绑定到全局的typedef
void set(LENGTH x){_val = x;}
LENGTH get(){return _val;}
private:
typedef float LENGTH; //编译失败,改变了全局LENGTH的定义。
LENGTH _val;
};
int main()
{
Test t;
return 0;
}
在类定义体中声明的LENGTH的typedef被当做重复定义,导致编译失败。
并且类中的成员函数均绑定到全局的typedef。
当你的类定义体中使用了typedef,请尽量放在类定义的首部。那么类中对于该typedef的引用将会是正确且一致的。
#include
using namespace std;
typedef int LENGTH;
class Test
{
typedef float LENGTH; //放在类定义首部便没有问题
public:
void set(LENGTH x){_val = x;}
LENGTH get(){return _val;}
private:
//typedef float LENGTH;
LENGTH _val;
};
int main()
{
Test t;
return 0;
}