Работа с кодом Visual C++ (конструктор классов)
Конструктор классов отображает визуальную рабочую область конструирования, называемую схемой классов, которая представляет визуальное изображение элементов кода в проекте. Схема классов используется для создания и отображения классов и других типов данных в проекте.
Конструктор классов поддерживает следующие элементы кода C++:
Класс (походит на фигуру управляемого класса, но при этом может иметь множественные отношения наследования)
Анонимный класс (отображает имя, созданное окном классов для анонимного типа)
Класс-шаблон
Структура
Enum
Макрос (отображает представление макроса после обработки)
Определение типа
Устранение неполадок, связанных с разрешением типа и отображением
Расположение исходных файлов
Конструктор классов не отслеживает размещение исходных файлов. Поэтому при изменении структуры проекта или перемещении исходных файлов в проекте конструктор классов может потерять путь типа (особенно если исходный тип является типом typedef, базовым классом или связанным типом). При этом может возникнуть ошибка, например Class Designer is unable to display this type. Для предотвращения возникновения ошибки перетащите измененный или перемещенный исходный код в схему классов и отобразите его повторно.
Проблемы обновления и производительности
Для проектов Visual C++ время отображения в схеме классов изменений в исходном файле может занимать от 30 до 60 секунд. Такая задержка может вызвать возникновение ошибки No types were found in the selection. При возникновении подобной ошибки в окне сообщения об ошибке нажмите кнопку Отмена и дождитесь появления элементов кода в "Окне классов". После этого конструктор классов должен отобразить тип.
Если схема классов не обновляет изменения в коде, необходимо закрыть схему и открыть ее снова.
Проблемы разрешения типа
Конструктор классов не может разрешить типы по следующим причинам:
Тип находится в проекте или сборке, на которую нет ссылки из проекта, содержащего схему классов. Для исправления этой ошибки добавьте ссылку в проект или сборку, содержащую тип. Дополнительные сведения см. в разделе Практическое руководство. Добавление и удаление ссылок в Visual Studio.
Тип не находится в области действия, и конструктор классов не может его обнаружить. Убедитесь, что код присутствует в операторах using, imports или #include. Также проверьте, что тип (или связанный тип) не был перемещен за пределы пространства имен, в котором он находился первоначально. Дополнительные сведения см. в разделе Создание ссылок на пространства имен и компоненты.
Тип не существует (или закомментирован). Для исправления этой ошибки убедитесь, что тип не закомментирован и не удален.
Тип расположен в библиотеке, на которую ссылается директива #import. Возможным способом решения является добавление сгенерированного кода (TLH-файла) в директиву #include в файл заголовка вручную.
Наиболее распространенной ошибкой разрешения типа является ошибка Code could not be found for one or more shapes in class diagram '<element>'. Дополнительные сведения см. в описании ошибки.
Устранение неполадок при получении конкретных сообщений об ошибках
Дополнительные сведения об устранении неполадок при получении конкретных сообщений об ошибках см. в разделах Дополнительные сведения об ошибках конструктора классов.
Ограничения для элементов кода C++
После загрузки проекта Visual C++ конструктор классов работает в режиме "только для чтения". Разработчик может изменить схему классов, но не сможет сохранить изменения из схемы классов обратно в исходный код.
Конструктор классов поддерживает только исходную семантику C++. Для скомпилированных в управляемый код проектов Visual C++ конструктор классов будет только отображать элементы кода, которые являются собственными типами. Поэтому при добавлении схемы классов в проект конструктор классов не позволяет визуализировать элементы, для которых свойство IsManaged имеет значение true (т. е. типы значений и ссылочные типы).
Для проектов Visual C++ конструктор классов считывает только определение типа. Например, представьте, что тип определен в файле заголовка (H-файл), а также определены его члены в файле реализации (CPP-файл). При вызове команды "Показать схему классов" в файле реализации конструктор класса ничего не отобразит. Другим примером является вызов команды "Показать схему классов" в CPP-файле, который использует оператор #include для включения других файлов, но не содержит действующих определений классов. И в этом случае конструктор классов ничего не отобразит.
IDL-файлы, которые определяют интерфейсы COM и библиотеки типов, не отображаются в схемах до тех пор, пока не будут скомпилированы в исходном коде C++.
Конструктор классов не поддерживает глобальные функции и переменные.
Конструктор классов не поддерживает объединения. Это специальный тип класса, в котором память выделяется только по мере необходимости для объединения больших данных-членов.
Конструктор класса не отображает базовые типы данных, такие как int и char.
Конструктор классов не отображает типы, которые определены за пределами текущего проекта, если проект не содержит корректных ссылок на эти типы.
Конструктор классов может отобразить вложенные типы, исключая отношения между вложенными и другими типами.
Конструктор классов не может отобразить типы, которые являются типами "void" или производными от типа "void".
См. также
Основные понятия
Классы Visual C++ в конструкторе классов
Структуры Visual C++ в конструкторе классов
Перечисления Visual C++ в конструкторе классов
Операторы typedef языка Visual C++ в конструкторе классов
Другие ресурсы
Разработка и просмотр классов и типов
Работа с классами и другими типами (конструктор классов)
Работа со схемами классов (конструктор классов)