| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Новый класс |
| Автор: UnixBeginner 5.2.2006, 22:45 | ||
у меня нет опыта написания шаблонов и перегрузге операторов, но вот понадобился такой класс - аналог miltiset, только без сортировки:
как решить ошибку? Что сделать? |
| Автор: Daevaorn 5.2.2006, 22:57 | ||
| UnixBeginner Попробуй
|
| Автор: UnixBeginner 6.2.2006, 10:53 | ||||
Исправил, теперь вроде ОК, но когда я создаю переменную этого типа:
то компановщик выдает ошибку:
Что это может быть? |
| Автор: MAKCim 6.2.2006, 11:03 | ||||
отсутствует тело конструктора и деструктора, надо написать
|
| Автор: UnixBeginner 6.2.2006, 11:06 | ||
Вот:
|
| Автор: Empirik 6.2.2006, 11:31 |
| Дело в том, что объевление и тело шаблонного метода должны находиться в одном файле, иначе ни как. Это связанно с раздельной компиляцией. Перенеси все в один файл и будет тебе счастье. Или инклудом включай и h файл и cpp файл. Компилятору, что бы инстанцировать шаблонный класс, нужно мразу же иметь и интерфейс класса и тела его методов. |
| Автор: UnixBeginner 6.2.2006, 11:33 |
| Отлично, все заработало! Большое спасибо! |
| Автор: UnixBeginner 6.2.2006, 12:08 | ||
| Еще вопрос: Хочу чтобы в данном классе было подобие итератора в STL контейнеров, ну разве только намного проще Как это можно сделать. Описал класс iterator в классе list_array (см. выше). Теперь обращаюсь к нему:
|
| Автор: Earnest 6.2.2006, 21:37 | ||
| Какой-то странный у тебя контейнер получается... Два параллельных списка? Ну зачем такой изврат, не пойму... Во первых, лишний расход памяти: каждый узел списка добавляет еще по 2 указателя - зачем этот расход удваивать? Итератор двойной... жуть Опять же, приличный итератор должен разыменовываться в тип элемента, а кто тут у нас элемент? Прямо-таки просится std::pair... Ну и чем тебя std::list<std::pair<T1,T2> > не устраивает? Если очень хочется свой тип иметь, то можно так:
И все... |
| Автор: UnixBeginner 7.2.2006, 10:38 |
| а ну да, просто этот пункт в книжке я видать пропустил |