クラス デザイナーにおける Visual C++ の typedefVisual C++ Typedefs in Class Designer

typedef ステートメントは、名前とその基になる型との間に間接参照のレイヤーを 1 つ以上作成します。Typedef statements create one or more layers of indirection between a name and its underlying type. クラス デザイナーでは、キーワード typedef などで宣言される C++ の typedef 型をサポートしています。The Class Designer supports C++ typedef types, which are declared with the keyword typedef, for example:

typedef class coord  
{  
   void P(x,y);  
   unsigned x;  
   unsigned y;  
} COORD;  

この型を使用して、インスタンスを宣言することができます。You can then use this type to declare an instance:

COORD OriginPoint;

名前のない typedef を宣言することもできますが、クラス デザイナーでは指定したタグ名が使用されず、クラス ビューで生成される名前が使用されます。Although you can declare a typedef without a name, Class Designer will not use the tag name that you specify; it will use the name that Class View generates. たとえば、次の宣言は有効ですが、クラス ビューとクラス デザイナーでは __unnamed という名前のオブジェクトで表示されます。For example, the following declaration is valid, but it appears in Class View and Class Designer as an object named __unnamed:

typedef class coord  
{  
   void P(x,y);  
   unsigned x;  
   unsigned y;  
};  

typedef 型の使用の詳細については、「typedef 指定子」を参照してください。For more information about using the typedef type, see typedef Specifier.

C++ の typedef 図形には、typedef で指定された型の図形があります。A C++ typedef shape has the shape of the type specified in the typedef. たとえば、ソースで typedef class が宣言されている場合、図形の角が丸くなり、Class のラベルが付きます。For example, if the source declares typedef class, the shape has rounded corners and the label Class. typedef struct の場合、図形の角は四角で、Struct のラベルが付きます。For typedef struct, the shape has square corners and the label Struct.

クラスと構造体にはその内部で宣言された、入れ子にされた typedef を含めることができるため、クラスと構造体の図形では、入れ子にされた typedef 宣言を入れ子にされた図形として表示することができます。Classes and structures can have nested typedefs declared within them; therefore, class and structure shapes can show nested typedef declarations as nested shapes.

typedef の図形では、コンテキスト メニューとして [関連として表示] および [コレクションの関連として表示] のコマンドをサポートしています。Typedef shapes support the Show as Association and Show as Collection Association commands on the context menu.

次に、クラス デザイナーでサポートされる typedef 型の例を挙げます。The following are some examples of typdef types that the Class Designer supports:

typedef type name

name : typename : type

Typedeftypedef

可能であれば、型 name とつながる関連線を描画します。Draws an association line connecting to type name, if possible.

typedef void (*func)(int)

func: void (*)(int)

Typedeftypedef

関数ポインターの typedef。Typedef for function pointers. 関連線は描画されません。No association line is drawn.

ソースの型が関数ポインターの場合、クラス デザイナーに typedef は表示されません。Class Designer does not display a typedef if its source type is a function pointer.

typedef int MyInt;  
class A {  
   MyInt I;  
};  

MyInt: int

Typedeftypedef

A

クラスClass

ソースの型の図形からターゲットの型の図形にポイントする関連線を描画します。Draws an association line pointing from the source type shape to the target type shape.

Class B {};

typedef B MyB;

B

クラスClass

MyB : B

Typedeftypedef

typedef の図形を右クリックして [関連として表示] をクリックすると、typedef またはクラスと、2 つの図形を結合する[Alias of] (エイリアス) の線 (関連線と似ています) が表示されます。Right-clicking a typedef shape and clicking Show As Association displays the typedef or class and an Alias of line joining the two shapes (similar to an association line).

typedef B MyB;

typedef MyB A;

MyBar : Bar

Typedeftypedef

上と同じ。Same as above.

Class B {};  
typedef B MyB;  

class A {  
   MyB B;  
};  

B

クラスClass

MyB : B

Typedeftypedef

A

クラスClass

MyBは入れ子にされた typedef の図形です。MyB is a nested typedef shape.

#include <vector>

...

using namespace std;

...

typedef vector<int> MyIntVect;

vector<T>クラスvector<T>Class

MyIntVect : vector<int>

Typedeftypedef

class B {};

typedef B MyB;

class A : MyB {};

MyB : B

Typedeftypedef

-> B-> B

B

A

クラスClass

-> MyB-> MyB

クラス デザイナーでは、コンテキスト メニュー コマンドを使用したこのような関係の表示はサポートしていません。Class Designer does not support displaying this kind of relationship by using a context menu command.

#include <vector>

Typedef MyIntVect std::vector<int>;

Class MyVect : MyIntVect {};

std::vector<T>

クラスClass

MyIntVect : std::vector<int>

Typedeftypedef

MyVect

クラスClass

-> MyIntVect-> MyIntVect

関連項目See Also

Visual C++ コードの使用 (クラス デザイナー) Working with Visual C++ Code (Class Designer)
typedef 指定子typedef Specifier