Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 |
а ну да, просто этот пункт в книжке я видать пропустил ![]() |