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

определение функции-члена класса шаблона вне описания класса - C++

Восстановить пароль Регистрация
 
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
25.04.2013, 21:21     определение функции-члена класса шаблона вне описания класса #1
Создаю класс шаблон в котором используется шаблон структура
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
template <class Type>
struct Obj{
Obj *Next;
Type Buf;
};
 
template <class Type>
class List{
private:
    size_t Sz;
    Obj* Beg, End;
    Obj *Get(size_t i);
    Obj *Add(Type val);
    Type Del(size_t val, bool Destroying = false);
    void DestroyEmpty();
    void Clear(bool Destroying);
    
public:
    Type Delete(size_t val);
    Type operator [](size_t val){return val<Sz? Get(val)->Buf: NULL;};
    void operator <<(Type val)  {Add(val);};
    size_t Length(){return Sz;};
 
List(){
    Sz = 0;
    Beg = new Obj; 
    Beg->Next = NULL;
}//--------------------------------------------------------------
 
~List(){
    Clear(true);
    delete Beg;
}//--------------------------------------------------------------
};
с функциями которые описаны и определены внутри описания класса все в норме. А вот как описать функцию Obj* List::Get(size_t i) вне описания класса
C++
1
2
3
4
5
6
7
8
template <class Type>
Obj* List::Get(size_t i){
    Obj *tec = Beg;
    while(i){
        tec = tec->Next;
        i--;}
    return tec;
}//--------------------------------------------------------------
ругается error C2955: Obj: для использования класса шаблон требуется список аргументов шаблон
1> см. объявление "Obj"
1> error C2244: List<Type>::Get: не удается сопоставить определение функции существующему объявлению
1> см. объявление "List<Type>::Get"
1> определение
1> 'Obj *List::Get(size_t)'
1> существующие объявления
1> 'Obj *List<Type>::Get(size_t)'

Добавлено через 6 минут
уже разобрался... вот может кому еще понадобится нужно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <class Type>
class List{
private:
    size_t Sz;
    Obj<Type>* Beg, End;
    Obj<Type> *Get(size_t i);
    Obj<Type> *Add(Type val);
....}
 
 
 
template <class Type>
Obj<Type>* List<Type>::Get(size_t i){
    Obj<Type> *tec = Beg;
    while(i){
        tec = tec->Next;
        i--;}
    return tec;
}//--------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 21:21     определение функции-члена класса шаблона вне описания класса
Посмотрите здесь:

Определение члена класса C++
C++ Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?
Определение класса в DLL - ипользование вне и динамически C++
C++ определение функции за пределами шаблона класса
C++ Определение типа члена шаблонного класса
C++ Определение метода-шаблона за пределами шаблона класса
C++ Определение методов вне класса
C++ Определение чистой виртуальной функции класса-шаблона

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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