В моем коде, у меня есть большое количество проверок на равенство ...qreal равенства терпит неудачу в освобождении, но работает в отладке (и бросьте плавать также работает)
, например:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsLineItem* x = new QGraphicsLineItem(50, 50, -50, -50);
QGraphicsView view(new QGraphicsScene(-200, -150, 400, 300));
view.scene()->addItem(x);
view.show();
bool sameLine = true;
QLineF line1 = x->line();
qreal _length = line1.length();
foreach(QGraphicsItem* item, view.scene()->selectedItems())
{
QGraphicsLineItem *item2 = dynamic_cast<QGraphicsLineItem*>(item);
if(item2->line().length() != _length)
sameLine = false;
}
qDebug("same line: %d", sameLine);
}
Кажется, что работает ... в отладке. Затем, когда тестируется в выпуске, он терпит неудачу?
Предположим, один выбранный элемент, так item1
и item2
одинаковы, поэтому независимо от точности, указанные выше длины должны быть равны ....
В отлаживать, я не был в состоянии видеть это провал. .. еще в релизе, он всегда терпит неудачу!
функции выше (length()
) Возвращает qreal
Единственные обходные я вижу бы
- реализовать мои собственные проверки на равенство, что ограничивает точность, или
- отбрасывать любые qreal
значения до float
.
Но это нелогично (и много работы, мне нужно было бы проверить количество потенциальных мест).
Может кто-нибудь объяснить, почему это происходит и как лучше всего обойти эту проблему?
Вы явно не скомпилировали этот код, так как он сказал бы вам, что вы попытались получить доступ к элементу указателя. Поэтому я могу заключить, что вы не опубликовали фактический код, с которым у вас возникла проблема, что делает ваш вопрос совершенно бесполезным и полностью безответным. Пожалуйста, вернитесь, когда у вас есть реальный вопрос. – Puppy
@Puppy исправлена, я скопировал это из очень большой программы с очень большим количеством проверок, так что действительно, это не полный код. Я скопировал и вставил соответствующую часть. – Thalia
Можете ли вы предоставить [MCVE] (https://stackoverflow.com/help/mcve), который демонстрирует эту проблему? Трудно диагностировать, что может происходить без полного контекста. –