Russian Qt Forum
Ноябрь 22, 2024, 04:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Как написать функцию Length(QList *)?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Как написать функцию Length(QList *)? (Прочитано 1923 раз)
deadlineX
Новичок
Offline
Сообщений: 11
Как написать функцию Length(QList *)?
«
:
Август 17, 2023, 17:13 »
Доброго времени суток!
Возник вопрос: как написать функцию, возвращающую QList::count(), но именно, как функцию с аргументом (QList *)? Я перевожу большой проект с Delphi на Qt. и первое (ну, почти
), с чем столкнулся, это как бы так записать Length() и SetLength(), если я в качестве массивов использую QList? Хотелось бы именно универсальные функции, а не для каждого класса свою пару, так-то смысл теряется почти - можно простой заменой пройтись и везде заменить Length(myArray) на myArray.count()... Есть более красивое решение?
-Спасибо.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Как написать функцию Length(QList *)?
«
Ответ #1 :
Август 17, 2023, 18:59 »
Код
C++ (Qt)
template
<
typename
Container
>
size_t
Length
(
Container c
)
{
return
c.
size
(
)
;
}
Записан
deadlineX
Новичок
Offline
Сообщений: 11
Re: Как написать функцию Length(QList *)?
«
Ответ #2 :
Август 18, 2023, 04:35 »
Спасибо!
И то есть, получается, что при такой записи без разницы, что передавать в аргумент - экземпляр класса или указатель на него?
То есть, если передать (QList *myArray), то оно преобразуется в myArray->size() ?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Как написать функцию Length(QList *)?
«
Ответ #3 :
Август 18, 2023, 09:33 »
нет, указатель так не передашь. а зачем передавать массив как указатель? в случае с Qt контейнерами их можно передавать по значению
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
deadlineX
Новичок
Offline
Сообщений: 11
Re: Как написать функцию Length(QList *)?
«
Ответ #4 :
Август 18, 2023, 18:05 »
OK, принято.
Там еще не очень понятно с оператором [].
Допустим, элементом листа является некая структура.
Когда делается resize(), эти элементы заполняются нулями?
Или там просто кусок памяти с мусором в каждом элементе?
И допустим также. что одно из полей структуры тоже QList<T>.
Это поле никак не надо предварительно инициализировать? Его сразу можно использовать, например тоже ему делать resize()?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Как написать функцию Length(QList *)?
«
Ответ #5 :
Август 18, 2023, 21:51 »
вызовется конструктор по умолчанию в обоих случаях
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
deadlineX
Новичок
Offline
Сообщений: 11
Re: Как написать функцию Length(QList *)?
«
Ответ #6 :
Август 19, 2023, 04:26 »
Цитата: kambala от Август 18, 2023, 21:51
вызовется конструктор по умолчанию в обоих случаях
Простите мне мою необразованность, но что является конструктором для структуры?
У меня там везде элементами массива (который QList) являются не классы, а структуры.
Или это сейчас уже не важно с точки зрения компилятора?
С тех пор, как у структур появились методы, все смешалось...
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: Как написать функцию Length(QList *)?
«
Ответ #7 :
Август 19, 2023, 14:26 »
Структура в C++ - это класс с открытыми по умолчанию членами ))
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...