Поделиться через


Операторы typedef языка Visual C++ в конструкторе классов

Обновлен: Ноябрь 2007

Операторы typedef создают один или более уровней косвенного обращения между именем и его базовым типом. Конструктор классов поддерживает те определения типов С++, которые объявлены с ключевым словом typedef, например:

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

Позднее можно использовать данный тип для объявления экземпляра:

COORD OriginPoint;

Несмотря на то что можно объявить определение типа без указания имени, конструктор классов не будет использовать имя тега, заданное разработчиком. Он будет использовать имя, которое создаст "Окно классов". Например, следующее объявление является допустимым, но тип будет отображаться в окне классов и в конструкторе классов как объект с именем __unnamed:

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

Дополнительные сведения об использовании типа typedef см. в разделе typedef Specifier.

Фигура оператора typedef языка C++ имеет фигуру типа, указанную в typedef. Например, если источник объявляет typedef class, у фигуры будут скругленные углы и метка Класс. У значка для typedef struct квадратные углы и метка Структура.

Классы и структуры могут иметь вложенные операторы typedef, объявленные внутри них, поэтому фигуры класса и структуры могут отображать объявления операторов typedef как вложенные фигуры.

Фигуры оператора typedef поддерживают команды Показывать как ассоциацию и Показывать как ассоциацию наборов в контекстном меню.

Ниже приведено несколько примеров типов оператора typedef, поддерживаемых конструктором классов:

Элемент кода

Представление конструктора классов

typedef type name

name : type

typedef

Рисует линию связи к типу name, если это возможно.

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

См. также

Основные понятия

Работа с кодом Visual C++ в конструкторе классов

Ссылки

typedef Specifier