Просмотр сообщений
|
Страниц: 1 [2] 3 4 ... 137
|
16
|
Qt / Общие вопросы / Re: UB или нет?
|
: Июль 19, 2018, 21:09
|
Ты можешь спокойно снимать константность, никто тебя за это не накажет. Кроме другого разработчика, конечно. . А есть еще mutable мемберы. член d - не mutable. https://en.cppreference.com/w/cpp/language/const_cast говорит: const_cast makes it possible to form a reference or pointer to non-const type that is actually referring to a const object or a reference or pointer to non-volatile type that is actually referring to a volatile object. Modifying a const object through a non-const access path and referring to a volatile object through a non-volatile glvalue results in undefined behavior. C++ (Qt) struct type { int i; type(): i(3) {} void f(int v) const { // this->i = v; // compile error: this is a pointer to const const_cast<type*>(this)->i = v; // OK as long as the type object isn't const } }; type t; // if this was const type t, then t.f(4) would be undefined behavior t.f(4);
|
|
|
21
|
Компиляторы и платформы / Windows / Crashpad на Windows 7 и VS2015
|
: Июль 09, 2018, 15:22
|
Кто-нибудь пробовал? Инструкции вроде ясны, но как обычно ничего не работает. Во-первых, недавние июньские коммиты прекратили поддержку VS2015. Во-вторых, он ещё и SDK для Windows 10 требует, даже если сделать reset --hard на более ранние коммиты. Собственно, кто-то пробовал этого зверя на Win7+VS2015?
|
|
|
23
|
Qt / Вопросы новичков / Re: QFileDialog открывается 2 раза
|
: Июль 09, 2018, 14:58
|
Не пойму из-за чего это может происходить.
Из-за того, что твой слот имеет стандартное имя и распознаётся метасистемой Qt. Поэтому Qt автоматически создаёт к нему подключение с помощью QMetaObject::connectSlotsByName() (см. сгенерированный ui_...cpp файл). Ты создаёшь второе подключение вручную. Как результат, слот вызывается два раза подряд.
|
|
|
28
|
Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double
|
: Июнь 27, 2018, 16:39
|
Igors суффикс f не помог. Я проверил - внутри QVector2D данных хранятся правильно и одинаково как в 32-бит, так и в 64-бит версии. Проблема появляется только при вызове функции dotProduct (см. код выше) в 32-бит версии. Когда считаем руками - всё нормально
|
|
|
29
|
Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double
|
: Июнь 27, 2018, 16:37
|
deMax Продолжаем мистику! C++ (Qt) int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QTextStream ts(stdout, QIODevice::WriteOnly); QVector2D v1(8.10837e-09, -1); QVector2D v2(4.45843e-07, -1); // считаем руками const double d1 = v1.x() * v2.x() + v1.y() * v2.y(); // считаем стандартно const double d2 = QVector2D::dotProduct(v1,v2); ts.setRealNumberNotation(QTextStream::FixedNotation); ts.setRealNumberPrecision(20); ts << v1.x() << " " << v1.y() << " " << v2.x() << " " << v2.y() << " " << endl << d1 << " " << d2 << endl; ts.flush(); return 0; }
Выхлоп разный! 1.00000000000000000000 1.00000000000000355271
|
|
|
30
|
Программирование / С/C++ / Re: MSVC 2015 чудит: float -> double
|
: Июнь 27, 2018, 16:28
|
В первом случае вы убиваете точность, real(double) -> float -> double
Во втором также. В Qt5 QVector2D принимает и возвращает float. Поэтому и во втором случае идёт преобразование входных double литералов во float, потом dotProduct() считает результат также используя значения float, и возвращает также float!
|
|
|
|
|