Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Введение в язык C++ / Турне по C++ /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Обобщенные Вектора - Программирование от RIN.RU
Обобщенные Вектора

"Пока все хорошо," - можете сказать вы, - "но я хочу, чтобы один из этих векторов был типа matrix, который я только что определил." К сожалению, в C++ не предусмотрены средства для определения класса векторов с типом элемента в качестве параметра. Один из способов - продублировать описание и класса, и его функций членов. Это не идеальный способ, но зачастую вполне приемлемый.


Вы можете воспользоваться препроцессором (см. этот пункт), чтобы механизировать работу. Например, класс vector - упрощенный вариант класса, который можно найти в стандартном заголовочном файле. Вы могли бы написать:


#include
declare(vector,int);
main()
{
vector(int) vv(10);
vv[2] = 3;
vv[10] = 4; // ошибка: выход за границы
}


Файл vector.h таким образом определяет макросы, чтобы declare(vector,int) после расширения превращался в описание класса vector, очень похожий на тот, который был определен выше, а implement(vector,int) расширялся в определение функций этого класса. Поскольку implement(vector,int) в результате расширения превращается в определение функций, его можно использовать в программе только один раз, в то время как declare(vector,int) должно использоваться по одному разу в каждом файле, работающем с этим типом целых векторов.


declare(vector,char);
//...
implement(vector,char);


даст вам отдельный тип "вектор символов". Пример реализации обобщенных классов с помощью макросов приведен в этом пункте.



 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Комментарии

Типы и Описания

Выражения и Операторы

Функции

Структура программы

Классы

Перегрузка операций

Конструкторы

Вектора

Inline-подстановка

Производные классы

Еще об операциях

Друзья (friends)

Полиморфные Вектора

Виртуальные функции

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь