Название: QAbstractItemModel Отправлено: demaker от Апрель 08, 2014, 11:41 Подскажите пожалуйста почему вылетает
Код
Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 11:48 Вы напрямую преобразуете неизвестное в QObject *childObj и даже не проверяете результата :)
void * QModelIndex::internalPointer () не настораживает? :D Воид он возвращает, а не QObject. А вам видимо нужно QModelIndex QAbstractItemModel::createIndex ( int row, int column, void * ptr = 0 ). И это воид воткнуть в третий параметр. Хотя не понимаю зачем такие сложности :) Название: Re: QAbstractItemModel Отправлено: demaker от Апрель 08, 2014, 11:56 void * QModelIndex::internalPointer () не настораживает? :D Воид он возвращает, а не QObject. ну у меня вообще-то Код: reinterpret_cast Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 12:23 Т.е. если я сделаю
QPixmap pixmap = reinterpret_cast<QPixmap*>("1"); то получу картинку единицы? :) Вы берёте указатель неизвестно на что и приводите к QObject. И надеетесь что там будут все методы QObject? :) Название: Re: QAbstractItemModel Отправлено: Igors от Апрель 08, 2014, 12:35 Т.е. если я сделаю А Вы можете так сделать? :) И следите за словами (не void а указатель на void).QPixmap pixmap = reinterpret_cast<QPixmap*>("1"); demaker, reinterpret_cast просто затыкает рот компилятору но ничего не преобразовывает. Если значение указателя было нулевым/невалидным, то таким же и осталось. internalPointer не установлен правильно. И вообще как-то грустно от таких вопросов :'( Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 12:59 Могу :D reinterpret преобразует всё во всё, не делая никаких проверок :D
Название: Re: QAbstractItemModel Отправлено: Igors от Апрель 08, 2014, 13:03 Могу :D reinterpret преобразует всё во всё, не делая никаких проверок :D Да неужели? Тогда прошу откомпилить что Вы написалиQPixmap pixmap = reinterpret_cast<QPixmap*>("1"); Название: Re: QAbstractItemModel Отправлено: kambala от Апрель 08, 2014, 14:18 Верес, звездочка или лишняя или ее не хватает ;)
Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 14:20 Упсь ну эт да )
Указатель к указателю приводить можно :) А обратно нельзя :) Но это простительно) Звёздочка после QPixmap нужна :D Название: Re: QAbstractItemModel Отправлено: Igors от Апрель 08, 2014, 14:41 Упсь ну эт да ) Ну зачем надо себя подставлять, разве так трудно вставить строку в проект и нажать Cmd-K (Ctl F7)? :) Ведь все равно и со звездочкой не откомпилит. Не такой уж он простой, этот reinterpret_cast Указатель к указателю приводить можно :) А обратно нельзя :) Но это простительно) Звёздочка после QPixmap нужна :D Да. и "обратно" тоже можно :) Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 15:12 Со звёздочкой компилит.
Ну зачем надо себя подставлять, дальше бла бла бла, подставьте сами :) Название: Re: QAbstractItemModel Отправлено: Igors от Апрель 08, 2014, 16:27 Со звёздочкой компилит. Так это баг MSVC. В любом приличном компиляторе должны получить типаЦитировать reinterpret_cast from 'const char *' to 'QPixmap *' casts away qualifiers Включая и Qt CreatorНу зачем надо себя подставлять, дальше бла бла бла, подставьте сами :) Не надо огрызаться и хвостик подымать - так недостатки только заметнее :)Название: Re: QAbstractItemModel Отправлено: Old от Апрель 08, 2014, 16:34 Включая и Qt Creator К сожалению Qt Creator не умеет компилировать код. :)Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 17:00 Быгыгы :D Самый строгий компилятор это MSVC. Остальные имеют расхождения со стандартом (не имею в виду новый :) )
А тонкости надо знать ) В данном случае у меня указатель на 1 символ строки преобразуется в указатель на QPixmap :) PS бла бла бла о том, как так можно? :) Название: Re: QAbstractItemModel Отправлено: Old от Апрель 08, 2014, 17:03 Самый строгий компилятор это MSVC. Смешно. ;DЭто самый не слушающий стандарт компилятор с кучей своих расширений, которых больше нет нигде. Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 17:43 Ну я видел только вот что:
Код, компилировавшийся под MSVC, прекрасно компилируется под mingw. Код, компилировавшийся под mingw прекрасно НЕ компилируется под MSVC. И всякий ужас типа массивов неопределённой на этапе компиляции длины в стандарте не описан. Специально на этот счет искал, узнавал, выносил мозг другим людям. PS ужас выражен тем, что я переделывал штук 5 программ с него на MSVC. И это мля ха муха адский труд, ибо надо переписывать всё :) PPS приведите пожалуйста кучу расширений :) Хоть увижу одним глазком. Название: Re: QAbstractItemModel Отправлено: Old от Апрель 08, 2014, 17:45 Знаю человека, который переделывал все с msvc на gcc. При нем до сих пор не рекомендуется произносить ms, может в лицо вцепиться. :)
А там спокойнейший человек: борода, очки. ;D Название: Re: QAbstractItemModel Отправлено: Old от Апрель 08, 2014, 17:46 PPS приведите пожалуйста кучу расширений :) Хоть увижу одним глазком. Так гугл же. :)Набирайте "нестандартные расширения msvc". Название: Re: QAbstractItemModel Отправлено: Alex Custov от Апрель 08, 2014, 17:54 ну, ради справедливости, расширения есть у многих компиляторов, и у gcc тоже. И они по-умолчанию включены, что провоцирует писать нестандартный код.
Название: Re: QAbstractItemModel Отправлено: Old от Апрель 08, 2014, 17:56 ну, ради справедливости, расширения есть у многих компиляторов, и у gcc тоже. И они по-умолчанию включены, что провоцирует писать нестандартный код. Я не спорю, что они есть везде, меня улыбнуло это:Самый строгий компилятор это MSVC. Название: Re: QAbstractItemModel Отправлено: Alex Custov от Апрель 08, 2014, 18:01 PS ужас выражен тем, что я переделывал штук 5 программ с него на MSVC. И это мля ха муха адский труд, ибо надо переписывать всё :) Всё не так сложно, компилируешь сперва самим gcc поновее, с -pedantic и со всеми warnings. Исправляешь ошибки. P.S. Правда это не компилятор виноват в этих ошибках, а криворукий программист. Название: Re: QAbstractItemModel Отправлено: Igors от Апрель 08, 2014, 18:17 Эдак мы отклонились от темы
Могу :D reinterpret преобразует всё во всё, не делая никаких проверок :D Это неверно даже для указателей, вот пример который не откомпилится и на великом MSVCКод
Быгыгы :D Зачем вставлять эти междометия в каждый пост? "Учащийся ПТУ" что ли? (хз как оно сейчас называется). Зачем браться отвечать начинающему, да еще и изображать иронию, если плаваете в простых вещах? Может лучше "молчать и слушать"? :)... PS бла бла бла Название: Re: QAbstractItemModel Отправлено: Old от Апрель 08, 2014, 18:19 Зачем браться отвечать начинающему, да еще и изображать иронию, если плаваете в простых вещах? Может лучше "молчать и слушать"? :) Скажите, у вас принтер под рукой? Название: Re: QAbstractItemModel Отправлено: Bepec от Апрель 08, 2014, 18:56 Пфф... "Я привёл пример, я его доказал, я велик" © я.
Все ограничения reinterpret_cast можно почитать по этой ссылке http://msdn.microsoft.com/ru-ru/library/e0w9f63b.aspx. PS более по вашим вопросам тут отвечать не буду, а то опять флуд :/ Название: Re: QAbstractItemModel Отправлено: Igors от Апрель 09, 2014, 08:33 Все ограничения reinterpret_cast можно почитать по этой ссылке http://msdn.microsoft.com/ru-ru/library/e0w9f63b.aspx. Это надо было читать сразу как только Вам мягко намекнули какую хирню Вы написали.PS более по вашим вопросам тут отвечать не буду, а то опять флуд :/ Очень хорошо, но еще лучше Вам вообще нигде не отвечать. |