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

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

Войти
Регистрация
Восстановить пароль
 
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
#1

Шаблонная функция - C++

30.11.2013, 15:36. Просмотров 253. Ответов 4
Метки нет (Все метки)

Всем привет! Подскажите пожалуйста, почему не работает следующее объявление функции-шаблона?
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
        template <class T>
        class Base
        {
        T itsT;
        public:
        Base(): itsT(0) {}
        T getT() const {return itsT;}
        void setT(T age) {itsT = age;}
        class Temp { void func();};
        Temp* funcs();
        };
 
        template <class T>
        Base<T>::Temp* Base<T>::funcs()
        {
        cerr << "\nHELLO!\n";
        Temp obj;
        return &obj;
        }
 
        int main()
        {
        Base<int> myInt;
        myInt.funcs();
        return 0;
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 15:36     Шаблонная функция
Посмотрите здесь:

Шаблонная функция - C++
Учу c++, в книге приводится вот такой листинг примера работы шаблонной функции, однако он не компилится, выдает ошибку error C2668: swap:...

Шаблонная функция - C++
Как &quot;научить&quot; шаблонную функцию отличать массив от контейнера, то есть если написать: template &lt;class contains, class type&gt; type...

Шаблонная функция - C++
Необходимо сделать шаблонную функцию, в которой x заменяется на y, а y заменяется на x: void f(int *x, float *y) Помогите...

Шаблонная функция не работает - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T&gt;void Print_Car(T &amp;a); struct Car { int Number; char Color; ...

не работает шаблонная функция - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;list&gt; using namespace std; template &lt;class V, class E&gt; struct graph { ...

Линковщик и шаблонная функция - C++
Добрый вечер, почему если реализовать функцию в header'e и подключить её в разные модули - already defined, а если функция шаблонная ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.11.2013, 15:45     Шаблонная функция #2
Цитата Сообщение от BESSON_off Посмотреть сообщение
C++
1
Base<T>::Temp* Base<T>::funcs()
C++
1
typename Base<T>::Temp* Base<T>::funcs()
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
30.11.2013, 16:26  [ТС]     Шаблонная функция #3
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
typename Base<T>::Temp* Base<T>::funcs()
Можно прокомментировать?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.11.2013, 17:50     Шаблонная функция #4
Цитата Сообщение от BESSON_off Посмотреть сообщение
Можно прокомментировать?
что прокомментировать? книжку по шаблонам С++ открой, там все комментарии по этому поводу есть
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 18:56     Шаблонная функция
Еще ссылки по теме:

Шаблонная функция параметры - C++
Подскажите, где можно посмотреть перечень возможных команд в шаблонных функциях вроде: template &lt;class InputIterator, class T&gt; typename...

Не компилируется рекурсивная шаблонная функция - C++
Добрый день! Есть функция:#include &lt;iostream&gt; template&lt;uint8_t data, uint8_t ...other&gt; static void write() { std::cout &lt;&lt;...

Шаблонная функция вычисления остатка - C++
Здравствуйте дорогие обитатели форума, можете пожалуйста помочь с задачей: Функция вычисления остатка каждого элемента при делении на...

Шаблонная функция msvc vs mingw - C++
Всем привет. Сначала думал разместить код в раздел Qt, но кажется дело тут в различии реализаций msvc и mingw. Имеем такую вот...


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

Или воспользуйтесь поиском по форуму:
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.11.2013, 18:56     Шаблонная функция #5
ну в книжках это еще поискать нужно.
смотрите про имена, которые зависят от параметра шаблона.
указанное имя Temp (Base<T>::Temp) не считается компилятором именем типа. поэтому нужно явно это прописывать ключевым словом typename. Возможны ситуации, когда типом оно не является. Например где-то может быть специализация шаблона, в которой Temp - не вложенный тип, а имя переменной или еще чего-то.
Yandex
Объявления
30.11.2013, 18:56     Шаблонная функция
Ответ Создать тему
Опции темы

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