![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Нужно передать: 2-а QStringList, QString, QList<bool>, и возможно что-то еще.
Как лучше это сделать? Передавать кучу аргументов как то тупо. Правильно ли будет, создать свой собственный маленький класс, который будет сначала заполнятся, потом пересылаться, а затем считываться? |
|
|
![]() |
silver47 |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Гм. Возможно, класс слишком громоздко.... тут за глаза струтуры хватит, хотя не знаю подоплеку передачи данных в Qt, возможно, будет даже экономнее передвать впрямую строки. Я бы по старинке -структуру или указатель на нее бы передал, дешево и сердито.
|
|
|
RazrFalcon |
![]()
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Дык разницы то между структурой с классом фактически нет, уж лучше класс.
|
|
|
ilyabvt |
![]()
Сообщение
#4
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Дык разницы то между структурой с классом фактически нет, уж лучше класс. Угу, только передавать лучше через указатель. |
|
|
RazrFalcon |
![]()
Сообщение
#5
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
То есть передавать только указатель, а не весь класс?
Имеено: или хватит и: ? А то я в этом путаюсь ![]() |
|
|
ilyabvt |
![]()
Сообщение
#6
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
RazrFalcon |
![]()
Сообщение
#7
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Как я понимаю, ссылка лучше, так как если через указатель передавать, то нужно потом еще delete вызывать. Да?
|
|
|
ilyabvt |
![]()
Сообщение
#8
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: ![]() ![]() ![]() |
Цитата если через указатель передавать, то нужно потом еще delete вызывать. Да? Нет. Если вызвать delete то уничтожиться объект на который будет указывать указатель, т.е. ваш класс. А зачем вам его удалять? Сам же указатель, как переменная, уничтожиться при выходе из функции. |
|
|
RazrFalcon |
![]()
Сообщение
#9
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Ну так он нужен чтобы передать инфу, после передачи он больше не нужен. Просто будет еще морока с удалением. А так, как я понял, ссылка даст то же результат.
|
|
|
ilyabvt |
![]()
Сообщение
#10
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: ![]() ![]() ![]() |
Цитата А так, как я понял, ссылка даст то же результат. В целом, да. Различаться будет только вызов функции. |
|
|
RazrFalcon |
![]()
Сообщение
#11
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Все ясно, спасибо.
|
|
|
ssoft |
![]()
Сообщение
#12
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 17.2.2010 Из: Москва Пользователь №: 1470 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
Если хочется передавать собственную структуру, то, однозначно, лучше.
Особенно, если планируется это использовать в сигнал-слот взаимодействии.
Связать signal(const MyClass &myClass) можно с slot(const MyClass &myClass) или с slot(MyClass myClass) любым способом, а вот signal(MyClass &myClass) только с slot(MyClass &myClass) и, по моему, только Qt::DirectConnection. Если передавать через "голый" указатель, то необходимо следить за корректным удалением данных. Если хочется все-таки использовать указатель, тогда уж "умный", например, QSharedPointer. Передача структуры через "умный" указатель м.б. полезна при многопоточном программировании. Цитата В первом случае через указатель, во втором по ссылке. Хватит и ссылки, и даже без "const". Ссылка без "const", если данные не изменяются внутри вызываемого метода, мягко сказать не культурно или небрежно. Нужно также учесть, что в Qt обращение к не константным методам контейнеров, и всем классам Qt, использующим внутри QSharedData, могут быть связаны с полным копированием внутренних данных. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 18.6.2025, 13:20 |