Название: как ограничить кол-во элементов в QList или ему подобных Отправлено: Павел_F. от Октябрь 28, 2009, 12:03 Нужем список с ограничением на минимальное и максимальное кол-во элементов. Причем нужен именно шаблон списка потому что нужно списки десятка разных типов. Cмотрю в сторону QList и не вижу нужного ( именно ограничений в размерах). Как прикрутить? Может есть у кого идеи?
Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: lit-uriy от Октябрь 28, 2009, 12:10 не пойму зачем? Что будет если список полон, а ты вызываешь append() или insert()?
Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: Павел_F. от Октябрь 28, 2009, 13:08 Если список полон а я добавляю элементы нужно будет вернуть false и ничего не делать. Ровно как и когда вызываеш например removeAt() или removeLast() а список уже достиг минимума. Сам уже думал на тему целесообразности использовать список. Но если использовать массив то придется что-то динамическое мудрить ( максимум и минимум могут меняться в процессе работы) и придется что-то изобретать для передачи этого в нормальный список ( у библиотечной функции, которую я не обойду, на входе QList), в результате от списка не уйдеш, он "дан свыше", а допонительная сложность возникнет.
Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: BRE от Октябрь 28, 2009, 13:20 Можно примерно так:
Код
Только при конструировании этого объекта нужно в него minCount элементов каких-то добавлять. Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: BRE от Октябрь 28, 2009, 13:22 ( максимум и минимум могут меняться в процессе работы) Сейчас заданы жОстко, но можно и переменные использовать.Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: Павел_F. от Октябрь 28, 2009, 13:44 Немного переделал.
file.h: Код:
Код: template<class T> Объектник собирается нормально но приложение не линкуется. Цитировать test.o: In function `test::test(QWidget*)': Что ему не так?test.cpp:(.text+0xabd): undefined reference to `LimitList<int>::LimitList()' test.o: In function `test::test(QWidget*)': test.cpp:(.text+0x164d): undefined reference to `LimitList<int>::LimitList()' collect2: выполнение ld завершилось с кодом возврата 1 Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: BRE от Октябрь 28, 2009, 13:45 Это шаблон, сделай все в файле .h
Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: Павел_F. от Октябрь 28, 2009, 13:51 Спасибо, заработало. А с шаблонами вообще в *.cpp не перетащиш? А то много функций в *.h файле "не красиво"...
Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: BRE от Октябрь 28, 2009, 14:14 Спасибо, заработало. А с шаблонами вообще в *.cpp не перетащиш? А то много функций в *.h файле "не красиво"... http://www.forum.crossplatform.ru/index.php?showtopic=3591&st=0&start=0Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: Павел_F. от Октябрь 28, 2009, 14:23 О, спасибо еще раз. Теперь все ясно.
Кстати, вы в той теме по ссылке писали что не встречали реализацию через inline. Покурил исходники QList и там оба подхода реализованы... Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: BRE от Октябрь 28, 2009, 14:27 О, спасибо еще раз. Теперь все ясно. Второй вариант имеется ввиду с реализацией в файле .cppКстати, вы в той теме по ссылке писали что не встречали реализацию через inline. Покурил исходники QList и там оба подхода реализованы... Название: Re: как ограничить кол-во элементов в QList или ему подобных Отправлено: Павел_F. от Октябрь 28, 2009, 14:41 Видимо не до конца понятно... Ладно, задача решена. Пойду покурю книжку про шаблоны и как их едят.
|