c++ - Qt4: QMap导致 "strict-aliasing rules"编译错误

标签 c++ gcc qt4

我正在尝试在 C++ 中的 Qt 4.5 中创建以下数据结构:

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 中的错误,还是我做错了什么?

最佳答案

您提到的代码适用于 Intel/Mac OS X 上的 Qt 4.6.1 和 GCC 4.4.1。

$ 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 得到解决。 (除非它是特定于编译器目标的错误,这似乎不太可能;另外,您还没有告诉我们您正在编译的平台。)

关于c++ - Qt4: QMap导致 "strict-aliasing rules"编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248936/

相关文章:

c++ - 为什么在 C++ 中不能很好地优化天真的 abs 实现?

c++ - 中介者模式 vs 发布/订阅

gcc - 是否可以找到 GCC 可以生成的所有汇编指令的列表?

c++ - 为什么我不能将 std::string 与 libcurl 一起使用?

c++ - 使用 Cygwin 的 C++ 中的 undefined reference 错误,为什么我的文件没有链接?

ruby - Ruby/QT 的库错误

c++ - QPushButton 中的两种颜色文本

qt - 如何让 QFileDialog 提示覆盖?

linux - Linux 上 dlopen() 的有效相对路径?

c - C 中的静态库包含问题