как вернуть QMap из функции?, Создавать указатель или напрямую? |
Здравствуйте, гость ( Вход | Регистрация )
как вернуть QMap из функции?, Создавать указатель или напрямую? |
myr |
4.9.2009, 16:03
Сообщение
#1
|
Студент Группа: Участник Сообщений: 37 Регистрация: 4.9.2009 Из: С-Пб Пользователь №: 1052 Спасибо сказали: 0 раз(а) Репутация: 0 |
Подскажите, пож-та.
Если создавать указатель то как обращаться к данным? Как выделчть память? Спасибо. |
|
|
kwisp |
4.9.2009, 16:07
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
myr,
а что делает функция? получает ли она QMap и наполняет его потом? сама создает и наполняет? можешь код показать? |
|
|
Litkevich Yuriy |
4.9.2009, 16:39
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Я бы поступил так:
с помощью Асистента (например, используя полнотекстовый поиск) посмотрел какие функции в Qt возвращают QMap (или ссылку или указатель на него), посмотрел бы исходники таких функций. На основе увиденного сделал бы как это сделано у тролей. |
|
|
kwisp |
4.9.2009, 17:15
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
не ясна задача. для чего это делается.
я бы включил необходимый мап в класс. и возвращал бы указатель или ссылку на него через константную функцию для чтения и через не константную для записи(если она вообще нужна). |
|
|
Гость_Гость_* |
4.9.2009, 20:39
Сообщение
#5
|
Гости |
я бы включил необходимый мап в класс. и возвращал бы указатель или ссылку на него через константную функцию для чтения и через не константную для записи(если она вообще нужна). если возвращается один и тотже локальный то можно не парится с производительностью, переменная будет сразу на месте возврата, называется return value optimization. здесь например RVO невозможно
|
|
|
kwisp |
4.9.2009, 22:43
Сообщение
#6
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Гость_Гость_*
не понятно о чем вы. |
|
|
myr |
7.9.2009, 9:03
Сообщение
#7
|
Студент Группа: Участник Сообщений: 37 Регистрация: 4.9.2009 Из: С-Пб Пользователь №: 1052 Спасибо сказали: 0 раз(а) Репутация: 0 |
QMap classDialog::func1();
QMap func1(){ QMap map; // расчеты, используя данные диалогового окна. return map; } В модальном дилоговом окне заполняеться QMap. Его надо вернуть в основное окно программы. |
|
|
niXman |
7.9.2009, 10:45
Сообщение
#8
|
Участник Группа: Участник Сообщений: 169 Регистрация: 18.6.2008 Пользователь №: 204 Спасибо сказали: 1 раз(а) Репутация: 0 |
О чем вообще вы говорите!
Все объекты в Qt Implicit Sharing http://doc.trolltech.com/4.5/shared.html Поправка: Все объекты-контейнеры. Сообщение отредактировал niXman - 7.9.2009, 10:36 |
|
|
myr |
7.9.2009, 10:58
Сообщение
#9
|
Студент Группа: Участник Сообщений: 37 Регистрация: 4.9.2009 Из: С-Пб Пользователь №: 1052 Спасибо сказали: 0 раз(а) Репутация: 0 |
О чем вообще вы говорите! Все объекты в Qt Implicit Sharing http://doc.trolltech.com/4.5/shared.html Поправка: Все объекты-контейнеры. Значит можно и возврвщать из функции , умный QT все сам сделает. |
|
|
kwisp |
7.9.2009, 11:13
Сообщение
#10
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Значит можно и возврвщать из функции , умный QT все сам сделает. да это просто песня! П.С. думать не надо, все сделают добрые фины одно дело когда ты прохавал как всё работает ( http://doc.trolltech.com/4.5/shared.html ) до этого изучив как работать без этого, оценил достоинства и недостатки и делаешь выбор, чтоб потом не было неприятной неожидонностью сигментэйшн фаулт к примеру на чисто с++ проекте без использования qt. П.П.С. я не против implicit shared, я за грамотное пользование инструментами с++ и Qt. |
|
|
Текстовая версия | Сейчас: 26.12.2024, 17:13 |