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

шаблоны в си++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
romambrb
Сообщений: n/a
23.01.2011, 21:57     шаблоны в си++ #1
кто может сказать где прблема?

List.h
#ifndef LIST_H
#define LIST_H

#include<iostream>
#include<ostream>
#include<istream>
#include<ostream>
#include<string>
#include<fstream>
#include<list>

using namespace std;


template <class TData>
class List
{
class Node
{
public:
TData d;
Node *next, *prev;
Node(TData dat = NULL){d = dat; next = NULL; prev = NULL;}
};//end class Node
Node *pbeg, *pend;
public:

List(){pbeg = NULL; pend = NULL;}
~List();
void add(TData d);
Node * find(TData d);
Node * insert(TData key, TData d);
bool remove(TData key);
void print();
void print_back();
};//end class List

#endif //LIST_H

List.cpp
#include"list.h"



template <class TData> List <TData>::~List()
{
if (pbeg !=0)
{
Node *pv = pbeg;
while (pv)
{
pv = pv->next;
delete pbeg;
pbeg = pv;
}
}
}
//-------------------------
template <class TData> void List <TData>:rint()
{
Node *pv = pbeg;
cout << endl << "list: ";
while (pv)
{
cout << pv->d << ' ';
pv = pv->next;
}
cout << endl;
}
//-------------------------
template <class TData> void List <TData>:rint_back()
{
Node *pv = pend;
cout << endl << " list back: ";
while (pv)
{
cout << pv->d << ' ';
pv = pv->prev;
}
cout << endl;
}

//-------------------------
template <class TData> void List <TData>::add(TData d)
{
Node *pv = new Node(d);
if (pbeg == NULL)
pbeg = pend = pv;
else
{
pv->prev = pend;
pend->next = pv;
pend = pv;
}
}
//-------------------------

template <class TData> Node * List <TData>::find( TData d)
{
Node *pv = pbeg;
while (pv)
{
if(pv->d == d)break;
pv = pv->next;
}
return pv;
}

//-------------------------

template <class TData> Node * List <TData>::insert(TData key, TData d)
{
if(Node *pkey = find(key))
{
Node *pv = new Node(d);
pv->next = pkey->next;
pv->prev = pkey;
pkey->next = pv;
if( pkey != pend)(pv->next)->prev = pv;
else pend = pv;
return pv;
}
return 0;
}

//-------------------------
template <class TData> bool List <TData>::remove(TData key)
{
if(Node *pkey = find(key))
{
if (pkey == pbeg)
{
pbeg = pbeg->next; pbeg->prev = 0;
}
else if (pkey == pend)
{
pend = pend->prev; pend->next = 0;
}
else
{
(pkey->prev)->next = pkey->next;
(pkey->next)->prev = pkey->prev;
}
delete pkey; return true;
}
return false;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2011, 21:57     шаблоны в си++
Посмотрите здесь:

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». C++
Шаблоны C++
Шаблоны C++
C++ шаблоны
Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны C++
Шаблоны C++
C++ Шаблоны
Шаблоны C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.01.2011, 22:04     шаблоны в си++ #2
Проблема в том, что пока вы не оформите код в теги форматирования, смотреть его никто не будет.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
23.01.2011, 22:05     шаблоны в си++ #3
А что за проблема-то?

<телепатия вкл.>
Уверен, что как только ты сольешь два файла в один (а именно, в *.h, который должен содержать как объявление, так и реализацию шаблонного класса, *.cpp не нужен вообще), твоя "проблема" испарится.
</телепатия вкл.>
Yandex
Объявления
23.01.2011, 22:05     шаблоны в си++
Ответ Создать тему
Опции темы

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