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

Шаблонные функции и классы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерный массив. Вычислить значение функции для отрицательных элементов массива и подсчитать их количество http://www.cyberforum.ru/cpp-beginners/thread856331.html
Дано одномерный массив Р состоящий из 32 элементов. Вычислить значение функции для отрицательных элементов массива и подсчитать их количество. Помогите с решением в С++. :) Зарание спасибо. :good:
C++ Классы и наследование Помогите написать программу, в которой описана иерархия классов: геометрические фигуры(ромб, параллепипед, эллипс). Реализовать методы вычисления площади и периметра фигуры. Продемонстрировать работу всех методов классов, пердоставив пользователю выбор типа фигуры для демонстрации. http://www.cyberforum.ru/cpp-beginners/thread856329.html
C++ Проверить на выход за границы массива
ПРивет, помогите пожалуйста, пишу класс - динамический массив, в перегрузке оператора нужно проверить на выход за границы, но не знаю как правильно использовать try, catch, throw. template <class T, int size> T & Array<T, size> :: operator (int index) { try { if (index < 0 || index >= currentSize) throw out_of_range("Index was out of range"); } catch(...) { // что тут писать чтобы...
C++ Сортировка очереди <char>
помогите пож с сортировкой очереди queue очередь состоит из латинсколо алфавита. нужно отсортировать по возростанию и по спаданию .. типо от а до z и от z до а если можно через <algoritm> ну или через масив char (была идея с асхи кодами но не вышло у меня) char a = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',...
C++ тип time_t http://www.cyberforum.ru/cpp-beginners/thread856297.html
Нужно ввести 2 переменные типа time_t с клавиатуры , потом переконвертировать их в строки и записать в файл. В процессе исполнения программы вылетает ошибка: Debug assertion failed. Expression: invalid null pointer. Что за такой невалидный нуль указатель не пойму. Даты вводил и в таком виде(25.11.2012 20:00:00) и в таком (Web Feb 13 16:06:10 2013) результат не меняется, все равно программа...
C++ Символьные вычисления Есть задача создания символьных вычислений с помощью C++. Все подобные приложения написаны на Lisp. Думал разобраться с SymbolicC++3 но документации нет вовсе и вся библиотека не компилируется а только отрывки. Расстроился и подумал что вот можно организовать взаимодействие C++ с консольным приложением Maxima, я бы с легкостью получил результат, если бы использовал php функцию shell_exec, но... подробнее

Показать сообщение отдельно
VVani
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 45

Шаблонные функции и классы - C++

05.05.2013, 13:16. Просмотров 299. Ответов 1
Метки (Все метки)

Добрый день.
У меня возникли проблемки при использование шаблонных функций. Вот код
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class LineTable{
    private:
     AnsiString lname;
     AnsiString ltype;
     vector<int> lvalue;
     vector<float> flvalue;
     vector<double> dlvalue;
     vector<AnsiString> alvalue;
    public:
     LineTable():lname(""),ltype("")
     {}
     LineTable(AnsiString name,AnsiString type):lname(name),ltype(type)
     {}
     ~LineTable(){}
 
     AnsiString get_name()
     {return lname;}
     AnsiString get_type()
     {return ltype;}
 
     template<class CFun>
     CFun get_value(int i)
     {
      if(ltype=="int")
       return lvalue[i];
      if(ltype=="float")
       return flvalue[i];
      if(ltype=="double")
       return dlvalue[i];
      if(ltype=="AnsiString")
       return alvalue[i];
     }
 
     int get_count()
     {
      if(ltype=="int")
       return lvalue.size();
      if(ltype=="float")
       return flvalue.size();
      if(ltype=="double")
       return dlvalue.size();
      if(ltype=="AnsiString")
       return alvalue.size();
     }
 
     template<class CFun>
     void record_value(CFun a)
     {
      if(ltype=="int")
       lvalue.push_back(a);
      if(ltype=="float")
       flvalue.push_back(a);
      if(ltype=="double")
       dlvalue.push_back(a);
      if(ltype=="double")
       alvalue.push_back(a);
     }
};
 
class Table{
    private:
     AnsiString tname;
     AnsiString tdescription;
 
    public:
    vector<LineTable> theLineTable;
 
     Table():tname(""),tdescription("")
     {}
     Table(AnsiString name,AnsiString des):tname(name),tdescription(des)
     {}
     ~Table(){}
 
     AnsiString get_name()
     {return tname;}
     AnsiString get_description()
     {return tdescription;}
     int get_count()
     {return theLineTable.size();}
 
};
У меня есть класс Table хранящий вектор объектов LineTable. В LineTable хранится вектор lvalue и все подобные ему ,отличающиеся типом данных. Объект Table -это таблица, которая хранит строки LineTable и каждая строка может хранить разные типы данных,т.е. одна строка -один тип. Как сделать шаблон класса ,чтобы можно было обойтись одним вектором в определение LineTable, конечно если это возможно ? Если нет, то вопрос будет следующим как сделать шаблон фукнции get_value()? Загвоздка последнего вопроса заключается в том что он не хочет работать с типом AnsiString. Пишет что не возможно конвертировать AnsiString в int,float,double, а если убрать этот тип ,то все работает , но в программе он мне нужен. Вроде все рассказал. Буду благодарен за любую помощь. Жду предложений.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru