Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Реализация работы меню через указатели на методы класса

Читайте также:
  1. Callback-методы S-функции
  2. I. ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ
  3. I. Организация класса (2-3 мин.)
  4. I.6. Работа и теплота. Свойства работы и теплоты.
  5. II Требования охраны труда перед началом работы.
  6. II этап работы
  7. II. Взаимосвязь социальной политики и социальной работы

Классы

Реализация программы обычным способом (без использования указателей на методы класса)

Составить описание класса (KString) одномерных массивов строк, где каждая строка является элементом массива:

char *str[N] = {"\nНа холмах Грузии лежит ночная мгла;",

"Шумит Арагва предо мною.",

"Мне грустно и легко; печаль моя светла;",

"Печаль моя полна тобою." };

Начальное объявление и инициализация массива строк (str) осуществляется в функции main().

Предусмотреть:

● конструктор – KString(char **);, который в качестве параметра принимает указатель на массив str.

Массив str – это ничто иное, как массив указателей на строки. Каждый элемент такого массива – строка. Но в Си строка является, по существу, указателем на ее первый символ. Таким образом, каждый элемент в массиве строк в действительности является указателем на первый символ строки. Каждая строка хранится в памяти как строка, завершающаяся нулевым символом. Число символов в каждой из строк может быть различным. Таким образом, массив указателей на строки позволяет обеспечить доступ к строкам символов любой длины. Т.е., условно это выглядит так: Указатель на указатель является формой многочисленного перенаправления или цепочки указателей: В случае обычных указателей, указатель содержит адрес некоторого участка памяти, содержащего некоторое значение. В случае указателя на указатель, первый указатель содержит адрес второго, который в свою очередь содержит адрес участка памяти, содержащего некоторое значение. Переменная, являющаяся указателем на указатель, должна быть описана путем помещения двух звездочек перед именем. Например, следующее объявление сообщается компилятору, что balance – это указатель на указатель типа float: float **balance; Важно понимать, что balance – это не указатель на число с плавающей точкой, а указатель на указатель на вещественное число.

 

● вывод на экран всего массива – метод void PrintText();;

● выполнения операций сцепления двух массивов (строк) с образованием нового массива (строки) – метод void CatStr2();;

● удаления элемента массива (строки) – метод void DelStr();;

● возможность обращения к отдельным строкам массива по индексам – метод void PrintStr();.

Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню (метод void Menu(KString);), позволяющее выбирать режим работы, реализованный соответствующим методом:

1 – Вывод текста;

2 – Вывод строки;

3 – Соединение строк;

4 – Удаление строки;

0 – Выход.

 

Реализация работы меню через указатели на методы класса

 

Объявление указателей на метод класса

Объявляется указатель на метод класса KString, который ничего не возвращает и не принимает никаких параметров:

void (KString::*ptf)();

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

ptf = &KString::метод класса;

 

Определение массива указателей на методы класса

Объявляется и инициализируется массив указателей на методы класса KString, которые ничего не возвращают и не принимают никаких параметров:

void(KString::*ptf[4])() = {&KString::PrintText,&KString::PrintStr,

&KString::CatStr2,&KString::DelStr};

 

Вызов метода на выполнение через индекс в массиве указателей

(String.*ptf[i])();

где i – индекс указателя в массиве ptf;

String– объект класса KString, объявленный в функции main().

 


Дата добавления: 2015-09-01; просмотров: 67 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Задача 7.3. Страховые взносы на обязательное социальное страхование: определение облагаемой базы и расчет.| Задача 17

mybiblioteka.su - 2015-2024 год. (0.006 сек.)