![]() |
|
Модераторы: Poseidon |
![]()
|
|
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
Вобщем поробую выложить кратко суть проблемы: мне нуно использовать шаблон List со своим типом данных, а я незнаю че нужно переопределять и как ваще ето все замутить. Как работать в STL с стандартыми типами данных немного разбрался.
Вот есть к примеру *.h файл с моим классом
все методы этом класе реализованы и протестированы. Кстати если че то они реализованы для обычного использование, не для STL или нет разници. . Нужноли чтонибуть еще сюда или может чтото убрать ваще надо???. Вот на что меня хватило
И вообще хоть штото сдесь есть правильное или я может ваще все неправильно понял P.S. если у кого есть простые реализованные примеры по моему вопросу дайте плиз, мне на примерах легче понять чем в книжке. |
||||
|
|||||
| boriska |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 7.12.2006 Где: kharkov Репутация: нет Всего: нет |
перегрузи operator<< |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Ну для начала нужно подключить заголовок <iterator>. И перегрузить оператор выведения в поток, что-то типа того:
|
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: нет Всего: 6 |
Нужно перегрузить: конструктор по умолчанию, конструктор копий, если будет, то конструктор с параметрами, определить виртуальный деструктор, перегрузить оператор присваивания. Дальше - зависит от того, что ты планируешь делать со своим классом, арифметические операторы, operator >>, operator << ну и далее по вкусу. Для твоего класса приблизительно так:
А вообще почитай Элджера, C++ для профессионалов, там и не такое описано. Для использования в STL ничего специального делать не нужно. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
забавно |
|||
|
||||
| HappyLife |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
Хех, на мой взгляд проще в классе сделать функтор. InStream(ostream& stream); |
||||
|
|||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
Daevaorn,
да так) Личный опыт. Это сообщение отредактировал(а) HappyLife - 20.4.2007, 15:16 |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
лучше писать нестандартные функторы с нестандартными именами?.. (имхо) |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 2 Всего: 183 |
cupper,
Я правильно понимаю, что в классе hist_event выделяется динамическая память для even, а потом, в деструкторе, уничтожается? Если так, то тебя ждут увлекательные приключения при использовании контейнеров STL. Объекты, которые можно класть в контейнеры STL, дожны непременно обладать одним свойством: быть copy-constructable. Потому что копирование там на каждом шагу - да хоть взять push_back. А твой объект таковым не является. И самое печальное, что компилятор сгенерирует тебе конструктор копирования без звука... Он просто скопирует твой указатель... Дальше надо? А вы беспокоитесь о выводе в поток... Да он просто может не дожить... -------------------- ... |
|||
|
||||
| cupper |
|
||||||||||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
Если меня не подводит память то конструктор по умолчанию, конструктор копирования и конструктор присваивания у мну есть:
Еще раз повторю все ети методы реализованы и протестированы!!!!!!!
Добавлено через 14 минут и 26 секунд
ДА!!!!!! есть указатель char* ... и в деструкторе она удалаяться!!!
Если я неошибаюсь то STL есть возмоность использовать свой тип данных, а раз есть возможность то нечего сверХ необычного недолжн быть
ДА Я ПЕРЕОПРЕДЕЛИЛ КОНСТРУКТОР КОПИРОВАНИЯ, ОН РАБОТАЕТ!!!!!!
ПОПРОБУЮ перефразировать свою просьбу: с учетом того что уменя уже реализовано, мне нуно 1) чтобы я мог кроме того как ввести свой список, так же мог его вывести 2) отсортировать по возростанию 3) имел возможность добавлять элементы 4) умел полностью очистить весь список 4) и еще один мотод который позволял бы находить средный интервал в годах между событиями |
||||||||||||||||||
|
|||||||||||||||||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 2 Всего: 183 |
Извини, твой код особо не смотрела. Ясно, что корректных (в смысле безопасности) вариантов копирования только 2: глубокое копирование и подсчет ссылок. Первый вариант несколько избыточен - выделять память, чтобы немного подвигать элементы, и потом тут же удалить - это как-то... нерентабельно, что ли. Но дело вкуса. И работать будет, если не очень критична производительность. Второй вариант неудобно реализовывать с "голым" указателем. Для этого есть смарт-пойнтеры. Что и рекомендую.
Только copy-constructable. Причем корректность копирования полностью на твоей совести. Использование STL все-таки предполагает некоторое понимание процесса, как и C++ в целом. И вообще, С++ - это язык, где зад программисту не подтирают: предполагается, что он уже научился это делать сам. Извините за грубость, но иногда достает ... Добавлено через 7 минут и 32 секунды
Не бывает. Бывает конструктор копирования (у тебя тоже есть). А это оператор присваивания. Просто терминология, но тем не менее Добавлено через 8 минут и 42 секунды И еще, "правильный" оператор присваивания должен возвращать ссылку, а не копию. -------------------- ... |
||||
|
|||||
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
Люди, это программа моя курсовая которую нада сдавать через пол месяца, ведет ее у меня мой декан, пробиться к ней мне не получаеться уже чутли не месяц, так что она мне толком помочь не можетю. ВЫ последняя надежда для меня, я С++ знаю на уровне базового изучения
ПОМОГИТЕ ХОТЬ В ЧЕМТО , и пожалуйста не на словах, а если мона хотябы небольшие но конкретные примеры как это сделать |
||||
|
|||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
всем большое спасибо (((((((( :'(
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |