Форум программистов, компьютерный форум CyberForum.ru

Инстанцирование шаблонного класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Изучение С++ http://www.cyberforum.ru/cpp-beginners/thread783921.html
Дайте, пожалуйста, ссылку на сайт, где очень подробно описаны строки, функции для них и операции с ними!
C++ Вставка елемента в двусвязный однонапревленый список struct list { int item; list *prev; list *next; }; void insert(list *start, int el) { while (start->next != NULL) http://www.cyberforum.ru/cpp-beginners/thread783916.html
Stack around the variable was corrupted C++
Ответа на свой вопрос нигде не нашел. Весь код большой и сложный, поэтому выложу ключевый строчки: int put_O::findEmpty(int beginI) { int i=beginI+1; while ((i < 9)&&(mass != ' '))
Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. помогите сделать, очень нужно.
C++ множественные наследования http://www.cyberforum.ru/cpp-beginners/thread783887.html
Ввод значений переменных различных типов (строкового, целого без знака, целого со знаком, вещественного) с контролем правильности ввода ИЛИ простейшие геометрические фигуры (треугольник, квадрат, прямоугольник, параллелограмм, ромб, трапеция) со свойствами: длины сторон, цвет границы, цвет фона. Разработать программу, генерирующую числа, означающие вид фигур и их свойства.
C++ Класс: Создайте класс Matr, определите в нем виртуальную функцию-член matrica(int n), которая определяет сумму элементов квадратной матрицы Создайте класс Matr, определите в нем виртуальную функцию-член matrica(int n), которая определяет сумму элементов квадратной матрицы. Создайте производные классы Matr1 и Matr2 с перегруженной функцией matrica(int n) для нахождения сумм главной и побочной диагоналей квадратной матрицы соответственно. подробнее

Показать сообщение отдельно
Okonenko Stanis
6 / 6 / 1
Регистрация: 06.02.2013
Сообщений: 71
09.03.2013, 10:18  [ТС]     Инстанцирование шаблонного класса
Огромное Вам спасибо silent_1991! Помогли мне разобраться в этом вопросе. Да, оформление Шаблонного Класса в виде одного заголовочного файла, видимо, решает проблему! Вы помогли мне понять смысл всего этого. Именно так написан STL. Хотя в случаях, когда Шаблонный Класс разрастается до внушительных размеров, это и не очень удобно,
в смысле трудности навигации по большому файлу.
Я же, задавая вопрос, скорее имел в виду какой-либо "хитрый прием". Сам я для себя придумал такую методику:
- Во все файлы реализации используемых в проекте Шаблонных Классов (в самую нижнюю их часть) включаю примерно такой текст:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//--------------------------------------------------------------------------------------------
// включение файла инстанцирования.
#include    "Cls.ins" // файл инстанцирования.
 
// явное инстанцирование на "Тип Данных 0".
template
class    TCls<DATA_0_TYPE>;
// явное инстанцирование на "Тип Данных 1".
template
class    TCls<DATA_1_TYPE>;
// явное инстанцирование на "Тип Данных 2".
template
class    TCls<DATA_2_TYPE>;
//--------------------------------------------------------------------------------------------
    - В файле-же инстанцирования "Cls.ins" имеется примерно такой текст:
//--------------------------------------------------------------------------------------------
//##### ТИПЫ ЯВНОГО ИНСТАНЦИРОВАНИЯ. #####
// "Тип Данных 0" (для явного инстанцирования).
#define    DATA_0_TYPE    int         //(используется.)
// "Тип Данных 1" (для явного инстанцирования).
#define    DATA_1_TYPE    double    //(используется.)
// "Тип Данных 2" (для явного инстанцирования).
#define    DATA_2_TYPE    void       //(НЕ используется.)
//--------------------------------------------------------------------------------------------
Таким образом во всех используемых в проекте Шаблонных Классах производится явное инстанцирование
на заказанные в файле инстанцирования "Cls.ins" типы.
Конечно убежден, что это неуклюжее и далеко не лучшее решение ...
 
Текущее время: 16:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru