crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в передача локальной переменной через сигнал
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 16.7.2011, 18:38
 
Цитата(mezmay @ 16.7.2011, 1:03) *
но в функцию то можно передавать указатели на локальные переменные, выход из области видимости то после функции где-то произойдет. А соединение сигнал-слот в одном потоке вроде эквивалетно прямому вызову
Сегодня ты об этом помнишь в своём слоте, а завтра нет. А если слот чужой, сторонней библиотеки? Вобщем лучше поостеречся.
когда происходит передача по значению тогда точно можно спать спокойно. Если же по указателю, то лучше уже динамически объект создать.

Цитата(ufna @ 16.7.2011, 16:47) *
по-умолчанию - QeuedConnection
Авто.
mezmay Дата 16.7.2011, 16:55
  Из асистента:
Qt::AutoConnection - (default) Same as DirectConnection, if the emitter and receiver are in the same thread. Same as QueuedConnection, if the emitter and receiver are in different threads.
ufna Дата 16.7.2011, 13:47
 
Цитата(mezmay @ 15.7.2011, 23:03) *
А соединение сигнал-слот в одном потоке вроде эквивалетно прямому вызову


Нет, если DirectConnection не задано (по-умолчанию - QeuedConnection).
Алексей1153 Дата 16.7.2011, 13:03
  sidsukana, лучше контейнер, чем такие опасные конструкции
sidsukana Дата 15.7.2011, 22:24
 
struct massiv
{
    int a[2];
};

...

void foo()
{
    massiv m;
    m.a[0] = 123;
    m.a[1] = 456;
}


Ну а там как хотите так и передавайте ваш массив.
mezmay Дата 15.7.2011, 22:03
  но в функцию то можно передавать указатели на локальные переменные, выход из области видимости то после функции где-то произойдет. А соединение сигнал-слот в одном потоке вроде эквивалетно прямому вызову
Litkevich Yuriy Дата 11.7.2011, 23:15
 
Цитата(mezmay @ 12.7.2011, 1:41) *
а это почему?
потому-что переменная умрёт, по выходу из локальной области видимости.
mezmay Дата 11.7.2011, 22:41
 
Цитата(Litkevich Yuriy @ 11.7.2011, 18:05) *
Цитата(mezmay @ 11.7.2011, 20:15) *
указатели и ссылки на локальные переменные передавать нельзя?
нельзя, но не только между потоками.

а это почему?
Litkevich Yuriy Дата 11.7.2011, 18:05
 
Цитата(mezmay @ 11.7.2011, 20:15) *
указатели и ссылки на локальные переменные передавать нельзя?
нельзя, но не только между потоками.
Цитата(mezmay @ 11.7.2011, 20:15) *
Только по значению получается передавать?
можно создать объект динамически (new), и передать указатель на него.
mezmay Дата 11.7.2011, 17:15
  Есть 2 потока. Из одного в другой надо передать массив, являющийся локальной переменной. Мне кажется что с помощью сигналов и слотов этого делать нельзя, т.к. этот массив на момент приема слотом может уже уничтожиться (т.к. между потоками связь не прямая а через события). Короче получается что указатели и ссылки на локальные переменные передавать нельзя? Только по значению получается передавать?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 8:11