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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VVani
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 45
#1

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

05.05.2013, 13:16. Просмотров 301. Ответов 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, а если убрать этот тип ,то все работает , но в программе он мне нужен. Вроде все рассказал. Буду благодарен за любую помощь. Жду предложений.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 13:16     Шаблонные функции и классы
Посмотрите здесь:

C++ Шаблонные функции
Шаблонные функции C++
C++ Шаблонные функции
C++ Шаблонные классы
Шаблонные классы. Присвоение к указателю и приведение типов C++
Шаблонные функции C++
C++ Шаблонные классы
Шаблонные функции в C++ C++
C++ Шаблонные классы
C++ Шаблонные дружественные классы
C++ Шаблонные функции
C++ Шаблонные классы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
05.05.2013, 13:32     Шаблонные функции и классы #2
boost::variant
Yandex
Объявления
05.05.2013, 13:32     Шаблонные функции и классы
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru