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

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

Войти
Регистрация
Восстановить пароль
 
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
#1

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

25.04.2013, 21:21. Просмотров 1198. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос определение функции-члена класса шаблона вне описания класса (C++):

Определение функции за пределами шаблона класса - C++
не могу определить функцию за пределами класса, не компилится подсобите советом template&lt; typename TData &gt; class Owner { ...

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

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

Определение метода-шаблона за пределами шаблона класса - C++
День добрый! Разбираюсь в шаблонах, решил копнуть поглубже. Вот пример: template &lt;typename T1&gt; class K // шаблон класса { public:...

Как реализовать метод шаблона вне класса? - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; template &lt;typename T = int&gt; class item { public: T data; ...

Определение члена класса - C++
Выдает ошибку типа оператор += не является членом класса Distance. ни могу понять include &lt;iostream&gt; using namespace std; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 21:21
Привет! Вот еще темы с ответами:

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

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

Определение класса в DLL - ипользование вне и динамически - C++
Однажды я уже задавал подобный ворос, ответа так и не получил. В свое время я обошелся без использования классов из DLL, но сейчас вновь...

Построение описания класса, создание и уничтожение объектов этого класса - C++
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть возможность раздельного изменения...


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

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

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