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

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

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

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

09.06.2013, 19:23. Просмотров 473. Ответов 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     Какой должен быть синтаксис для использования вложенного шаблонного класса?
Посмотрите здесь:

Какой должен быть итератор для константной ссылки на вектор? - C++
Есть вектор, он передается в функцию так: #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; void func(vector&lt;int&gt; arg)...

Как определять какой метод должен быть статическим, а какой нет? - C++
Quer::add_line_to_vec: недопустимый вызов нестатической функции-члена

Какой тип должен быть у функции? - C++
Сделал ф-цию, которая считывает файла и записывает результат работы с данными в vector. решил проверить, что хранит векотор, сделал ф-цию...

Какой алгоритм должен быть у формулы? - C++
Здравствуйте! Пробую решать задачи по основам программирования и алгоритмизации по учебнику. На первой картинке задача, на второй моё...

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

В VC++ параметр const (_variant_t & data) непонятно какой должен быть - C++
Господа помогите кто чем может :-) ITablePtr pTable есть ф-я pTable-&gt;SetPrivateData(long dataTag,const _variant_t &amp; data) с первым...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 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Эксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
09.06.2013, 19:41     Какой должен быть синтаксис для использования вложенного шаблонного класса? #4
#pragma, да, именно struct его обычно и делают.

Добавлено через 54 секунды
более того, лучше даже так:
C++
1
2
3
4
struct Node {
        T data;
        Node *next;
    } *head;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 19:45     Какой должен быть синтаксис для использования вложенного шаблонного класса?
Еще ссылки по теме:

В VC++ параметр const (_variant_t & data) непонятно какой должен быть - C++
Здарствуйте господа Я создаю репорт с помощью 'Report Designer Component' IApplicationPtr pApp; IReportPtr pRep; IReportPtr...

итератор для шаблонного класса - C++
Всем солнца! Честно честно честно пересмотрел более 100 различных вариантов разных решений. НО.... :wall: есть список: ...

Перегрузка << , >> для шаблонного класса - C++
Доброго времени суток всем! Данная тема не раз подымалась на форуме.. Но есть но.. Помогите перегрузить операторы побитового сдвига для...

Перегрузка operator<< для шаблонного класса - C++
Добрый день не могу понять как реализовать перегрузку &lt;&lt; для шаблонного класса template &lt;class T&gt; class List { public: ...

пространство имен для шаблонного класса - C++
template&lt;class T&gt; class BaseClass { T data; void show(); } Подскажите пожалуйста как написать тело функции. Если я неясно...

Перегрузка оператора -> для шаблонного класса - C++
Здравствуйте! Возникла проблема: не могу додуматься как перегрузить оператор -&gt; так, чтобы он корректно работал. Вот код: template&lt;class...


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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1447 / 1176 / 61
Регистрация: 21.04.2012
Сообщений: 2,463
Завершенные тесты: 3
09.06.2013, 19:45     Какой должен быть синтаксис для использования вложенного шаблонного класса? #5
Цитата Сообщение от #pragma Посмотреть сообщение
А если Node будет struct, это нормально?
Да без разницы.

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

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