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

Возможны ли полноценные шаблоны внутри классов? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с текстовыми файлами http://www.cyberforum.ru/cpp-beginners/thread119335.html
Подскажите плиз как делать на С++ вот такое вот: Даны два текстовых файла. Добавить в конец каждой строки первого файла соответствующую строку второго файла. Если второй файл короче первого, то оставшиеся строки первого файла не изменять. Подскажите хоть кто-то что-нибудь если не влом)
C++ Найти слова, начинающиеся и заканчивающиеся гласными буквами Помогите пожалуйста сделать программу, точнее переделать существующую, уже написанную мною по поиску слов, под программу, которая ищет английские слова, начинающиеся и оканчивающиеся на гласные буквы. По идее надо создать новый массив с заглавными и строчными гласными буквами алфавита и искать слова, начинающиеся и заканчивающиеся на любой элемент из массива с гласными буквами. Но я с трудом... http://www.cyberforum.ru/cpp-beginners/thread119334.html
C++ Что означает?
Вот код программы: // // Программа для преобразования // градусов Цельсия в градусы Фаренгейта: // Fahrenheit = NCelsius * (212 - 32)/100 + 32 // #include<iostream> using namespace std; int main(int nNumberofArgs, char* pszArgs)
Перегрузка и шаблон функции C++
1)Выполнить задание обеспечив перегрузку функций для типов int, float, double. 2)Выполнить задание оформив его в виде шаблона функции. Написать программы, использующие эти шаблоны для типов int, float, double #include <iostream> #include <iomanip> #include <stdlib.h> #include <cmath> using namespace std; int main ()
C++ Кольцевой список http://www.cyberforum.ru/cpp-beginners/thread119321.html
Написала код для односвязного кольцевого списка. Не могу понять свою ошибку. Помогите исправить))) #include <iostream> using namespace std; struct sсl { char inf;
C++ Как передать второй параметр DialogBox()& DialogBox (hInst, "DIALOGS", NULL, (DLGPROC) Pr); Пишет, мол типы не сходятся const char и LPCWSTR, посоветовали так DialogBox (hInst, (LPCWSTR)"DIALOGS", NULL, (DLGPROC) Pr); компилятор ругаться перестал, но вместо "DIALOGS" туда передаются аие то китайские иероглифы. Я вообще новичок, объясните мне, что я не понимаю подробнее

Показать сообщение отдельно
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
20.04.2010, 00:53     Возможны ли полноценные шаблоны внутри классов?
Есть такой класс с шаблоном (урезано чуток):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/* -------------------------------------------------------------------------- */
   class Value
   {
       private:
           Types value_type; // Тип переменной
           union
           {
               int    ival;
               // ...
           } value;
           std::string sval;// if value_type is string constant
       public:
          template <typename T>T getVal () const {
             switch (value_type)
             {
                case INT:    return value.ival;
                case STRING: return sval;
                default: assert(0);
             }
          }
   };
/* -------------------------------------------------------------------------- */
Используется тут:
C++
1
objwriter.addCodeStr(MOV,expr->GetValue().getVal(),ECX);
,где expr-класс с интерфейсом
expr
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
/* -------------------------------------------------------------------------- */
  typedef class Expression
  {
     private:
        ExprKind kind;
        line_count_t cur_line;// Line in source
        string cur_file;      // File where statement located
        union
        {
           struct {
              string      *arr_name;// Array name
              expr_List_t *indexes; // List of indexes
           } arr_el;
           struct {
              Value *val;           // Consant value
           } constant;
           struct {
              Variable *var;        // Variable
           } var;
           struct {                 // Unary operation
              OpKind kind;
              expr_Node_t *operand;
           } unop;
           struct {                 // Binary operation
              OpKind kind;
              expr_Node_t *operand1;
              expr_Node_t *operand2;
           } binop;
        } data;
     public:
        Value        GetValue       () const {return *data.constant.val;};
  } expr_Node_t;

На попытку использования получаю ошибку:
Код
|error: no matching function for call to ‘Value::getVal()’
Отчего эта ошибка? Шаблоны не могут быть полноценными членами класса? Компилируется всё нормально,если нет попытки использовать шаблон.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru