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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить площадь и нарисовать треугольник http://www.cyberforum.ru/cpp-beginners/thread848688.html
Задана сторона b, угол А, и радиус описывающего круга R. Вычеслить и вывести все остальные елементы треугольника: площадь S и периметр P. Угол(в градусах), сторона и радиус вводяться с клавиатуры. Так же сделать рисунок треугольника.
C++ Реализовать алгоритм Прима с бинарной кучей, в которой нужно хранить ребра Здравствуйте уважаемые программисты тут вот такая задачка попалась нужно реализовать алгоритм Прима с бинарной кучей, в которой нужно хранить ребра а ключом, по которому будет извлечение из вершины кучи, будет являться, длина ребра http://www.cyberforum.ru/cpp-beginners/thread848682.html
Запустить DirectSound C++
Здравствуйте. Где можно достать софт, чтобы можно было использовать объект IDirectSound8 из DirectSound? Никак не удается найти нужную библиотеку И еще dxguid.lib нужен
C++ Чтение из .txt построчно (ifstream)
Здравствуйте, возникли некоторые проблемы с ifstream. Не могу сделать чтение из .тхт файла построчно, да и просто не получается. Вот мой код: Присутствуют глобальные переменные string name; int score; int highscore(){ ifstream myfile ("scores.txt"); if (myfile.is_open()) {
C++ Написать программу составления списка в виде списочных ячеек http://www.cyberforum.ru/cpp-beginners/thread848648.html
Написать на Си++ программу составления списка (a ((((b)))) (c ((d)))) в виде списочных ячеек, распечатать сформированный список, получить список (b (d) ((a))), вывести результат. В обоих случаях показывать связи между элементами списка. При завершении работы удалить из памяти списки.
C++ Переделать программу есть программ, котора я отвечает условию: Используя множества А, В, С, состоящие из чисел, заполненные с клавиатуры, составить программу на C++, которая находит: ( A/B)\bigcap C. Помогите пожалуйсто ее переделать для задания: Используя множества А, В, С, состоящие из больших латинских букв, заполненные с клавиатуры, составить программу на C++, которая находит: (A\bigcap B)/C Заранее... подробнее

Показать сообщение отдельно
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
25.04.2013, 21:21     определение функции-члена класса шаблона вне описания класса
Создаю класс шаблон в котором используется шаблон структура
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;
}//--------------------------------------------------------------
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru