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

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

Восстановить пароль Регистрация
 
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
09.06.2013, 19:23     Какой должен быть синтаксис для использования вложенного шаблонного класса? #1
Никак не могу найти, как это правильно написать?
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|
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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
Временно недоступен
 Аватар для #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
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
09.06.2013, 19:45     Какой должен быть синтаксис для использования вложенного шаблонного класса? #5
Цитата Сообщение от #pragma Посмотреть сообщение
А если Node будет struct, это нормально?
Да без разницы.

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

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