Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2010, 20:18   #1
lirikoff
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 24
По умолчанию Шаблон класса списка

Как из существующего класса(вот тут я уже задавал вопрос по нему http://programmersforum.ru/showthrea...EA%EB%E0%F1%F1) создать шаблонный класс списка, для хранения данных какого либо типа?
Как я понимаю шаблон объявляется подобной конструкцией

template<typename T>
class List{
public:
//.............
private:
T data;
//.............
};
Либо я ошибаюсь?
Объясните подробнее сам процесс формирования подобного шаблона.
Заранее спасибо
lirikoff вне форума Ответить с цитированием
Старый 31.08.2010, 02:31   #2
vlad_light
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 95
По умолчанию

Код:
{
private:  
  static std::list<  ClassWhoKnowsAllHisInstances* > classList;

public:
  ClassWhoKnowsAllHisInstances()
  {  
    classList.push_back(this);
  }; 
  ~ClassWhoKnowsAllHisInstances()
  {  
    std::list< ClassWhoKnowsAllHisInstances* >::iterator it;
    it=(std::find(classList.begin(), classList.end(), 
        ( ClassWhoKnowsAllHisInstances* ) this));
    if(it!=classList.end())
      classList.erase(it);
  };
};
Это оно?
vlad_light вне форума Ответить с цитированием
Старый 01.09.2010, 13:33   #3
lirikoff
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от vlad_light Посмотреть сообщение
Код:
{
private:  
  static std::list<  ClassWhoKnowsAllHisInstances* > classList;

public:
  ClassWhoKnowsAllHisInstances()
  {  
    classList.push_back(this);
  }; 
  ~ClassWhoKnowsAllHisInstances()
  {  
    std::list< ClassWhoKnowsAllHisInstances* >::iterator it;
    it=(std::find(classList.begin(), classList.end(), 
        ( ClassWhoKnowsAllHisInstances* ) this));
    if(it!=classList.end())
      classList.erase(it);
  };
};
Это оно?
проблема в том, что я не понимаю как это применить...
этот код нужно вначале класса вписать или как?
плюс в этом шаблоне нужно реализовать программу, демонстрирующую работу со списком целых чисел и со списком строк.
вот код подобной программы, если я правильно понимаю смысл:
Код:
#include <iostream>
#include <list>
#include <string>

using namespace std;

int main()
{
  list<int> lint;
  list<string> lstr; 
  int n;
  string s;

  for (int i=1; i<=5; ++i) 
    {cin>>n; lint.push_back(n);}
  for (int i=1; i<=5; ++i) 
    {cin>>s; lstr.push_back(s);}

  cout<<"Enter 1 or 2 as a num of list"<<endl;
  cin>>n;
  switch(n)
  {
    case 1: 
      for (list<int>::iterator iter =lint.begin(); iter!=lint.end(); ++iter )
        {cout<<*iter;} break;
    case 2:
      for (list<string>::iterator iter =lstr.begin(); iter!=lstr.end(); ++iter )
        {cout<<*iter;} break;
    default: 
      cerr<<"Error!"<<endl;
      return -1;
  }
  getchar();
  return 0;
}
как ее связать с классом и шаблоном? я пытаюсь вставить ее в конец класса - выдает кучу синтаксических ошибок!
А сама по себе программка работает, и класс тоже.

Последний раз редактировалось Stilet; 03.09.2010 в 09:27.
lirikoff вне форума Ответить с цитированием
Старый 01.09.2010, 19:19   #4
vlad_light
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 95
По умолчанию

нуууу... эту программку я писал, правда не проверял, правильно ли она работает...
а можно написать:
template <typename T>;
list<T> tlist;
а дальше работать с tlist?
vlad_light вне форума Ответить с цитированием
Старый 02.09.2010, 21:23   #5
lirikoff
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 24
По умолчанию

в смысле с tlist?
ты имеешь ввиду дальше переписать туда мой класс? или как?
просто я не могу разобраться в самом принципе построения шаблона из класса.
Ну и в том, как все это потом заставить работать с списком строк и цифр.
lirikoff вне форума Ответить с цитированием
Старый 03.09.2010, 21:59   #6
lirikoff
Пользователь
 
Регистрация: 25.08.2010
Сообщений: 24
По умолчанию

Цитата:
Сообщение от vlad_light Посмотреть сообщение
нуууу... эту программку я писал, правда не проверял, правильно ли она работает...
а можно написать:
template <typename T>;
list<T> tlist;
а дальше работать с tlist?
все разобрался, все получилось! спасибо vlad_light
lirikoff вне форума Ответить с цитированием
Старый 03.09.2010, 22:44   #7
vlad_light
Пользователь
 
Регистрация: 27.08.2010
Сообщений: 95
По умолчанию

был рад помочь)
vlad_light вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++шаблон класса cati Помощь студентам 1 30.04.2010 00:24
не получается шаблон класса Yura_n Общие вопросы C/C++ 6 26.01.2010 19:39
Создать шаблон класса «очередь» (C++) NieL Помощь студентам 0 09.06.2009 13:31
Как написать шаблон класса Suren Общие вопросы C/C++ 4 25.05.2009 23:41
Шаблон класса androidvsu Общие вопросы C/C++ 2 26.04.2009 11:57