类设计器中的 Visual C++ Typedef
更新:2007 年 11 月
Typedef 语句在一个名称与其基础类型之间创建一个或多个间接层。类设计器支持用 typedef 关键字声明的 C++ typedef 类型,例如:
typedef class coord
{
void P(x,y);
unsigned x;
unsigned y;
} COORD;
您可使用此类型声明一个实例:
COORD OriginPoint;
虽然您可以声明一个没有名称的 typedef,但是类设计器不会使用您指定的标记名称,而是使用类视图生成的名称。例如,下面的声明是有效的,但它在类视图和类设计器中将显示为一个名为“__unnamed”的对象:
typedef class coord
{
void P(x,y);
unsigned x;
unsigned y;
};
有关使用 typedef 类型的更多信息,请参见 typedef Specifier。
C++ typedef 的形状与 typedef 中所指定类型的形状相同。例如,如果源声明 typedef class,则形状具有圆角和“类”标签。对于 typedef struct,则形状具有方角和“结构”标签。
类和结构的内部可以声明嵌套的 typedef;因此,类和结构的形状可以将嵌套的 typedef 声明显示为嵌套形状。
Typedef 形状支持上下文菜单上的“显示为关联”和“显示为集合关联”命令。
下面是类设计器支持的一些 typdef 类型的示例:
代码元素
类设计器视图
typedef type name
名称 : 类型
typedef
绘制一条与名称类型相连的关联连线(如果可能的话)。
typedef void (*func)(int)
func: void (*)(int)
typedef
函数指针的 Typedef。不绘制关联连线。
类设计器不显示源类型为函数指针的 typedef。
typedef int MyInt;
class A {
MyInt I;
};
MyInt: int
typedef
A
类
绘制一条从源类型形状指向目标类型形状的关联连线。
Class B {};
typedef B MyB;
B
类
MyB : B
typedef
如果右击 typedef 形状,然后单击“显示为关联”,就会显示 typedef 或类,以及连接这两个形状的线(与关联连线类似)的“别名”。
typedef B MyB;
typedef MyB A;
MyBar : Bar
typedef
同上。
Class B {};
typedef B MyB;
class A {
MyB B;
};
B
类
MyB : B
typedef
A
类
MyB 是一个嵌套的 typedef 形状。
#include <vector>
...
using namespace std;
...
typedef vector<int> MyIntVect;
vector<T> 类
MyIntVect : vector<int>
typedef
class B {};
typedef B MyB;
class A : MyB {};
MyB : B
typedef
-> B
B
A
类
-> MyB
类设计器不支持使用上下文菜单命令显示这种关系。
命令
#include <vector>
Typedef MyIntVect std::vector<int>;
Class MyVect : MyIntVect {};
std::vector<T>
类
MyIntVect : std::vector<int>
typedef
MyVect
类
-> MyIntVect