Параметры классов-шаблонов


CMap требует 4 параметра:

· тип ключей

· если тип ключей структура или класс, то тип аргумента для класса «тип_ключа&», т.е. ссылочный.

· тип-значений, сопоставимых ключа в отображении

· если тип 3-го параметра структура или класс, то тип аргумента для класса «тип_ значения&», т.е. ссылочный

Пример:

CMap<int,int,MY_STRUCT, MY_STRUCT&> myMap1;

Если в отображении в качестве ключа используется CString, то в качестве 2-го параметра надо указать LPCTSTR.

Шаблон-базированые совокупности ссылок требуют своих параметров. Так, CTypedPthArray, CTypedPtrList используют 2 параметра: базовый класс и тип элементов.

В 1-м случае в качестве базового класса надо указать: CObArray или CPtrArray, во 2-м случае: CObLisr, CPtrList. Таким образом достаточны операции базовых классов.

Класс COb..... указывается, если используются ссылки на классы, выводимы из CObject, а CPtr…… когда ссылки на классы не выводимы из CObject;

Параметризированый класс CTypedPtrMap требует 3-х параметров:

· базовый класс

· тип ключа

· тип значений хранимых в совокупности.

В качестве базового необходимо указать не шаблон базированный класс, определенный для реализации отображений: CMapPtrToWord, CMapPtrToPtr …

Пример

CTypedPtrMap<CMapPtrToPtr,CString,MY_STRUCT*> myPtrMap;

Определяется совокупность, представления отображение из множества объектов класса CString в указатели на тип MY_STRUCT. Если в качестве типа для значения (3-го параметра) используется класс или структура указатель на них, то необходимо, чтобы соответствующий класс или структура имели копирующий конструктор..

Для реализации итераций над совокупностями необходимо использовать следующие методы:

· для массивов GetAt(индекс)

· для списков GetNext(размещение), где размещение типа POSITION (тип ссылка для элементов списков)

· для отображений GetNetAssoc(размещение, ключ, значение); здесь ключ и значение – переменные, куда будут передаваться ключ и значение.

Пример

CMap<CString, LPCTSTR,CPerson*,CPerson*> myMap;

POSITION pos = myMap.GetStartPosition();//получение начального размещения

while (pos!=NULL)
{

CPerson* pPerson;

CString str;

myMap.GetNextAssoc(pos, str,pPerson);

//используем str, pPerson
}

 

Для получения размера массива используется GetSize(). Для получения начального размещения элемента в списке: GetHeadPosition(), GetStartPosition().

Для удаления элементов из совокупностей надо итеративно удалить все элементы из совокупности с использованием оператора delete и затем выполнить RemoveAll(). Для удаления отдельных элементов надо вызвать RemoveAt() или RemoveKey() – для отображений

Вопросы для самоконтроля

· Перечислите классы стандартных блоков диалога!

· Как выполнить установку фильтров файлов в классе CFileDialog?

· Как выполняется работа с файлами вне библиотеки MFC?

· Как выполняется работа с объектом класса CFile?

· Перечислите шаблон-базированные классы совокупностей!

· Каковы критерии отбора классов структурных типов данных?

Вопросы для самостоятельного изучения

· Какие операторы позволяют выполнить взаимные преобразования между классом String и типом char *?

 

Лекция 25. Разработка диалогового приложения в С++. Основной инструментарий

Многодокументный интерфейс DevStudio или Visual C++

Окно содержит меню с обычными основными пунктами и несколькими дополнительными, предназначенными для вызова компилятора, отладчика и работы с ресурсами (такими как окна, битовые карты (bitmap) и символьные константы сообщений, надписей и подсказок). В процессе создания программ и окон проекта окно DevStudio делится на такие части:

  1. в левой части окно с закладками, которое позволяет рассматривать проект как иерархию классов, - наборы файлов в проектах и их конфигурациях, совокупность ресурсов в проектах, источники данных, если используются средства СУБД; кроме того, имеется вкладка справочной системы, где содержится введение, описание С и С++, описания примеров, иерархия классов, руководство программиста, описание Win32API – интерфейса, описания технологий и т.д.
  2. в правой частиоконный фрейм, который может включать сколько угодно окон, с текстами программ, открытыми для редактирования, ресурсами, разделами справочной системы.
  3. окно снизу открывается для вывода сообщений компилятора и редактора связей. Могут открыться окна в процессе отладки для контроля вычисляемых выражений и переменных, а также отслеживание сообщений к окнам.

 

Любой проект по умолчанию создаётся в 2-х конфигурациях: отладочной(Debug) и с включенными опциями оптимизации по умолчанию (Release). Можно создать дополнительно ещё и свои конфигурации.

 

Типы проектов

Визарды DevStudio помогают создать каркас проекта. Типов проектов достаточно много. На начальных этапах достаточно знание следующих:

  1. AppWizard (exe, dll) – exe – программа или dll – библиотека функций; возможное создание диалоговых приложений, однооконных (SDI) или много оконных (MDI), на основе MFC – классов С++.
  2. Console Application - программа консольного типа с Dos – окном, использование обычных функций scanf(), printf() и т.д., вообще стандартной библиотеки С.
  3. Win32 Application – программа без использования MFC классов, но с использованием Win32API функций, средств ОС.
  4. Static Library – статическая библиотека функций совместимая с MFC классами и Win32API;
  5. Dynamic Linked Library - динамическая библиотека функций Win32API DLL, компилируется сразу для использования несколькими приложениями.

 

Кстати AppWizard разрешает использование Win32API, но с классами, при этом возникают некоторые проблемы с сообщениями об ошибках.

 



Дата добавления: 2016-05-26; просмотров: 1436;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.