WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Простой вопрос по STL (нет под рукой книжки)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Простой вопрос по STL (нет под рукой книжки)
BeeHolder опубликован 16-11-2001 16:24 MSK   Click Here to See the Profile for BeeHolder   Click Here to Email BeeHolder  
У меня есть класс MyClass.
Мне нужно сделать список из элементов этого класса. Какими свойствами для этого должен обладать класс и как запишется собственно объявление такого списка (что-то типа list<MyClass>lmc_list;) ??
rodion опубликован 16-11-2001 19:03 MSK     Click Here to See the Profile for rodion  Click Here to Email rodion     
Да
BeeHolder опубликован 17-11-2001 08:49 MSK     Click Here to See the Profile for BeeHolder  Click Here to Email BeeHolder     
Что да?
Так как написано - не работает.
Может, в классе надо определить конструктор копирования?
И объявления списка как надо делать:
list<MyClass>lmc_list;
или
list<MyClass, &MyClass>lmc_list;
Demo_S опубликован 18-11-2001 12:28 MSK     Click Here to See the Profile for Demo_S  Click Here to Email Demo_S     
а почему не сделать массив или список, или что у тебя там из указателей на класс?
Mabbus опубликован 18-11-2001 12:41 MSK     Click Here to See the Profile for Mabbus  Click Here to Email Mabbus     
надо в классе определите конструктор копирования
и "operetor ="
конструктор копирования имеет преблизительно следующий вид
MyClass(const &Myclass)
{
a=MyClass.a;
.........
b=MyClass.b;
}
Mabbus опубликован 18-11-2001 12:42 MSK     Click Here to See the Profile for Mabbus  Click Here to Email Mabbus     
запрос list'a

CList < MyClass &>l;

где "l" имя переменной

Mabbus опубликован 18-11-2001 12:44 MSK     Click Here to See the Profile for Mabbus  Click Here to Email Mabbus     
Sorry
CList <MyClass, &>l;
Mabbus опубликован 18-11-2001 12:46 MSK     Click Here to See the Profile for Mabbus  Click Here to Email Mabbus     
Sorry или так
MyClass(const MyClass &mu)
{
a=mu.a;
.....
b=mu.b;
}
Mabbus опубликован 18-11-2001 12:48 MSK     Click Here to See the Profile for Mabbus  Click Here to Email Mabbus     
to DEMOS
а зачем примитивно массив
когможно class CList использовать там и func
для работы есть
Flex Ferrum опубликован 19-11-2001 10:30 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
Помимо конструктора коприрования и оператора присваивания нужен еще конструктор по умолчанию.
Flex Ferrum опубликован 19-11-2001 10:32 MSK     Click Here to See the Profile for Flex Ferrum  Click Here to Email Flex Ferrum     
2Mabbus: А func для работы - это как? Т.е. какое это имеет отношение к списку?
Batiskaf опубликован 19-11-2001 12:42 MSK     Click Here to See the Profile for Batiskaf  Click Here to Email Batiskaf     
class MyClass
{
public:
MyClass()
{ str1 = (char*)malloc(sizeof(char)*n}

MyClass(const MyClass& other)
{
str1 = strdup(other.str1);
}

~MyClass()
{
free(str1);
}

MyClass& operator=(const MyClass& other)
{
free(str1);
str1 = strdup(other.str1);
}

/*
Если ты вставляешь в сортированный список то может еще понадобиться оператор ==, короче когда будешь компилировать увидишь сам, все что листику нужно.
bool operator==(const MyClass& that) const
{
if(!strcmp(str1, that.str1))
return true;
return false;
}
*/
private:
char* str1;
};

/*
Note: Особое внимание обрати на консты, многие компиляторы не поймут что
MyClass(MyClass& other) - это копи констрактор
*/

/**************End of oneFile.h***********/

/******************************/
// otherfile.h
//
//
/*******************************/
/*Теперь обьявление твоего типа*/
#include <list> // именно list а не list.h
using namespace std;
typedef list<MyClass> MyClassList;

// Обьявление переменной нового типа
MyClassList arMyClass;
....
.....
....

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.