Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 28.09.2011, 21:53
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Иногда я сталкиваюсь с такой проблемой при использовании connect( ): существование сигналов и слотов с соответствующими параметрами не проверятся на этапе компиляции. Поэтому, при изменении сигнатуры этих функций могут появиться скрытые ошибки. Я придумал такой выход:Код:Q_ASSERT(connect(obj1,SIGNAL(s ignal(int)),obj2,SLOT(slot(int))))Это полностью не исключает ситуации описанной выше, но шансов "напороться" на эту ошибку становится больше.Аналогично поступаю и с QMetaObject::invokeMethod().Код:Q_ASSERT (QMetaObject::invokeMethod(obj,"method", Q_ARG(QString,str))).При работе с проперти по имени (пример: obj.property("prop")) тоже может возникнуть ошибка при смене имени проперти или его типа. Поэтому для взятия значения я написал функцию, которая при отсутсвии свойства или неправельном типе вывалит ассерт. Вызов функции setProperty() тоже обкладываю ассертом.Собственно вопрос (или тема для дискуссии) А нормальное ли это решение? Может кто-то борется с этим по-другому. P.S. Приветствую любые высказывания по теме.
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
Издержки твоей профессии... Guest Ещё вопросы и ответы из архива 3 5 27.02.2012 19:57
Процесс передачи информации, источник и приемник информации,канал передачи иформации,скорость передачи информации Guest Второй архив вопросов и ответов 0 27.01.2012 14:17
кто платит судебные издержки? Guest Второй архив вопросов и ответов 0 20.06.2011 04:16



© www.otvetnemail.ru - Форум вопросов и ответов.