Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
1

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

25.04.2013, 21:21. Просмотров 1445. Ответов 0
Метки нет (Все метки)

Создаю класс шаблон в котором используется шаблон структура
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;
}//--------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2013, 21:21
Ответы с готовыми решениями:

Определение функции за пределами шаблона класса
не могу определить функцию за пределами класса, не компилится подсобите...

Определение чистой виртуальной функции класса-шаблона
Есть класс Comparable&lt;T&gt;: template&lt;typename T&gt; class Comparable : virtual...

Сам вопрос: почему функция-член одного класса не вызывается из функции-члена другого класса?
//Щас всё объясню. Так, имеем два класса, в одном я определил функцию-член. Все...

Определение метода-шаблона за пределами шаблона класса
День добрый! Разбираюсь в шаблонах, решил копнуть поглубже. Вот пример:...

Определение члена класса
Выдает ошибку типа оператор += не является членом класса Distance. ни могу...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 21:21

Как реализовать метод шаблона вне класса?
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; template...

Определение типа члена шаблонного класса
Такая проблема. Есть шаблонный класс с членом - указателем, тип которого должен...

Определение методов вне класса
Определение методов вне класса используется только для того, чтобы не вносить...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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