Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 45
1

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

05.05.2013, 13:16. Показов 595. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
У меня возникли проблемки при использование шаблонных функций. Вот код
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, а если убрать этот тип ,то все работает , но в программе он мне нужен. Вроде все рассказал. Буду благодарен за любую помощь. Жду предложений.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 13:16
Ответы с готовыми решениями:

Шаблонные классы
Добрый вечер,дорогие форумчане, подскажите пожалуйста верный синтаксис для шаблонного класса(где...

Шаблонные классы
Добрый день! Вопрос такой: есть класс class A { public: int x; A* z; } Мне нужно...

Шаблонные классы
Есть задание, на скрине ниже Помогите, как инициализировать объект PairArray в конструкторе класса...

Шаблонные классы
Помогите разобраться с шаблонными классами template &lt;class Type&gt; class CL1 { }; class CL2 {...

1
~ Эврика! ~
1257 / 1006 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
05.05.2013, 13:32 2
boost::variant
0
05.05.2013, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2013, 13:32
Помогаю со студенческими работами здесь

Шаблонные классы
Как сделать вот такой класс шаблонным? #ifndef CVECTOR_H #define CVECTOR_H #include &lt;iostream&gt;...

Шаблонные классы
Помогите, пожалуйста! Не понимаю как реализовать! Создать параметризованный линейный кольцевой...

Шаблонные классы и оптимизация
Насколько в С++ проработана оптимизация шаблоннов? Действительно ли на каждый инстант шаблона...

Шаблонные дружественные классы
Походу с шаблоном разбираюсь, Node* стала приватным в моем классе-итераторе. #include &lt;iostream&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru