Qt4: QMap вызывает ошибку компиляции "строгих правил псевдонимов" - PullRequest
2 голосов
/ 12 февраля 2010

Я пытаюсь создать следующую структуру данных в Qt 4.5 в C ++:

QMap<int, QMap<QString, QVector<QPointF> > > animation;

Однако включение этой строки в мой код приводит к следующей ошибке:

cc1plus: warnings being treated as errors
In file included from XXX/XXX/XXX/MainWindow.qt.C.tmp.C:113:
/usr/lib/qt4/include/QtCore/qmap.h: In member function ‘void MainWindow::exportAnn()’:
/usr/lib/qt4/include/QtCore/qmap.h:588: error: dereferencing pointer ‘y’ does break strict-aliasing rules
/usr/lib/qt4/include/QtCore/qmap.h:586: note: initialized from here
Command exited with non-zero status 1

Моя организация требует, чтобы я воспринимал все предупреждения как ошибки, поэтому я не могу просто игнорировать это. Это ошибка в Qt, или я что-то не так делаю?

1 Ответ

0 голосов
/ 13 февраля 2010

Упомянутый вами код отлично работает с Qt 4.6.1 и GCC 4.4.1 на Intel / Mac OS X.

$ cat a.cpp #include <QtCore>
void foo (QMap<int, QMap<QString, QVector<QPointF> > > &map)
  { map.clear(); }
$ g++-4.4-fsf -c -DQT_CORE_LIB -DQT_SHARED -I/Library/Frameworks/QtCore.framework/Versions/4/Headers a.cpp -W -Wall -Werror -g -O3 -fPIC
$

Так что ваша проблема, вероятно, исправлена ​​путем обновления до Qt 4.6.1. (Если это не ошибка, связанная с целью компилятора, которая кажется маловероятной; плюс, вы не сказали нам, на какой платформе вы компилируете.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...