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

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

Войти
Регистрация
Восстановить пароль
 
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
#1

Какой должен быть синтаксис для использования вложенного шаблонного класса? - C++

09.06.2013, 19:23. Просмотров 442. Ответов 4
Метки нет (Все метки)

Никак не могу найти, как это правильно написать?
C++
1
2
3
4
5
6
7
8
9
template <class T> class List {
  private:
    template <T> class Node {
        T data;
        Node *next;
    };
    Node <T> *head; //Первая ошибка указывает на данную строку
                    // (List<T>::Node *head тоже не помогает)
...
Компилятор требует лист аргументов, но как его подать?
Код
|26|error: type/value mismatch at argument 1 in template parameter list for 
‘template<class T> template<T <anonymous> > class List<T>::Node’|
|26|error:   expected a constant of type ‘T’, got ‘T’|
|27|error: invalid use of template-name ‘List<T>::Node’ without an argument list|
|36|error: invalid use of template-name ‘List<T>::Node’ without an argument list|
|39|error: expected ‘)’ before ‘&’ token|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 19:23     Какой должен быть синтаксис для использования вложенного шаблонного класса?
Посмотрите здесь:

Перегрузка operator<< для шаблонного класса C++
Перегрузка << , >> для шаблонного класса C++
C++ В VC++ параметр const (_variant_t & data) непонятно какой должен быть
C++ В VC++ параметр const (_variant_t & data) непонятно какой должен быть
Какой тип должен быть у функции? C++
пространство имен для шаблонного класса C++
C++ Как определять какой метод должен быть статическим, а какой нет?
C++ Какой должен быть итератор для константной ссылки на вектор?
Вызов метода у шаблонного поля, шаблонного класса C++
C++ Какой должен быть прототип у оператора копирующего присваивания?
C++ Какой алгоритм должен быть у формулы?
Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
09.06.2013, 19:30     Какой должен быть синтаксис для использования вложенного шаблонного класса? #2
#pragma, может просто
C++
1
2
3
4
5
6
7
8
template <class T> class List {
  private:
    class Node {
        T data;
        Node *next;
    };
    Node *head;
};
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
09.06.2013, 19:39  [ТС]     Какой должен быть синтаксис для использования вложенного шаблонного класса? #3
Да, действительно, я походу запутался немного.
То есть данный класс Node уже не шаблонный, но это не мешает структуре List. Просто у него нет своего параметра, логично..

Добавлено через 4 минуты
А если Node будет struct, это нормально? Всё равно ведь он в private части.

А если я его хочу вынести за пределы интерфейса класса( в том же заголовке, но ниже) то надо так писать?
C++
1
2
3
4
template <class T> class List<T>::Node {
        T data;
        Node *next;
    };
А внутри верхнего класса просто объявлять его без параметров?
MrGluck
Ворчун
Эксперт CЭксперт С++
6634 / 3825 / 502
Регистрация: 29.11.2010
Сообщений: 10,111
09.06.2013, 19:41     Какой должен быть синтаксис для использования вложенного шаблонного класса? #4
#pragma, да, именно struct его обычно и делают.

Добавлено через 54 секунды
более того, лучше даже так:
C++
1
2
3
4
struct Node {
        T data;
        Node *next;
    } *head;
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
09.06.2013, 19:45     Какой должен быть синтаксис для использования вложенного шаблонного класса? #5
Цитата Сообщение от #pragma Посмотреть сообщение
А если Node будет struct, это нормально?
Да без разницы.

Добавлено через 3 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
более того, лучше даже так
Чем же лучше, одну строчку сэкономили?)
Yandex
Объявления
09.06.2013, 19:45     Какой должен быть синтаксис для использования вложенного шаблонного класса?
Ответ Создать тему
Опции темы

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