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

Определение методов шаблонного класса - C++

Восстановить пароль Регистрация
 
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
06.07.2013, 23:41     Определение методов шаблонного класса #1
Столкнулся с такой проблемой, реализовываю итератор для шаблонного списка, при определении метода интератора вылетает ошибка
вот лог :
warning C4346: 'TList<T>::?$iterator_stl@$RT@BAAB@' : dependent name is not a type
1> prefix with 'typename' to indicate a type
: error C2143: syntax error : missing ';' before '&'
: error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
: error C2936: 'TList<T>::iterator_stl<T>' : template-class-id redefined as a global data variable
: fatal error C1903: unable to recover from previous error(s); stopping compilation

вот сам код :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
template<class T>
class TList
{
private:
 
    struct Node
    {
        Node* Next_root;
        Node* Prev_root;
        T data;
        Node(T &_data, Node* next = 0)
            : Next_root(next)
            , Prev_root(0)
            , data(_data)
        {}
    };
    Node* Head;
    Node* Tail;
    int Item_count;
 
public:
 
    class iterator_stl
    {
    private:
        Node* ptr;
    public:
        //friend class TList;
        iterator_stl(Node* node_ptr);
        iterator_stl& operator ++();
        iterator_stl& operator ++(int);
        iterator_stl& operator --(); 
        iterator_stl& operator --(int);
        T& operator *();
        bool operator == (iterator_stl &ptr);
        bool operator != (iterator_stl &ptr);
    };
 
    iterator_stl begin();
    iterator_stl end();
 
......
};
 
template<class T>
TList<T>::iterator_stl& TList<T>::iterator_stl::operator ++()// тут ошибку выдает
{
    ptr = ptr->Next_root;
    return *this;
}
......
В чем проблема подскажите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 23:41     Определение методов шаблонного класса
Посмотрите здесь:

Возможно ли создание объекта шаблонного класса в функции этого класса? C++
Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов C++
C++ Как вынести реализацию методов шаблонного класса в отдельный файл?
C++ Определение методов класса
C++ Определение типа члена шаблонного класса
C++ Определение методов вне класса
Вызов метода у шаблонного поля, шаблонного класса C++
C++ Объявление и определение шаблонного класса

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.07.2013, 23:47     Определение методов шаблонного класса #2
зависимое от аргумента шаблона имя не считается типом. чтобы компилятор считал его типом, ножно это явно указать ключевым словом typename:

C++
1
2
template<class T>
typename TList<T>::iterator_stl& TList<T>::......
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
07.07.2013, 10:35  [ТС]     Определение методов шаблонного класса #3
все верно, спасибо.
Yandex
Объявления
07.07.2013, 10:35     Определение методов шаблонного класса
Ответ Создать тему
Опции темы

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