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

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

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

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

23.01.2011, 21:57. Просмотров 1128. Ответов 2
Метки нет (Все метки)

кто может сказать где прблема?

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     шаблоны в си++
Посмотрите здесь:

Шаблоны в C++ C++
C++ Шаблоны C++
C++ Шаблоны
Шаблоны C++
C++ Шаблоны C++11
Шаблоны С++ C++
Шаблоны C++
Шаблоны C++
Шаблоны С++ C++
C++ Шаблоны
C++ Шаблоны
C++ Шаблоны

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

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

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

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