2010-02-12 41 views
2

我想在C++中創建的Qt 4.5以下的數據結構:的Qt4:QMAP造成「嚴格走樣規則」編譯錯誤

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中的錯誤,還是我做錯了?

+0

這看起來像應該報告給Qt項目。我不認爲這裏任何人都可以幫助你。 – LiraNuna 2010-02-12 01:01:07

+0

你使用什麼編譯器?任何可能強制執行這些別名規則的特殊編譯標誌? – shoosh 2010-02-12 01:25:00

+0

我使用的是g ++ 4.4.1,我的編譯標誌是-Wall,-Werror,-g,-O3和-fPIC – rcv 2010-02-12 18:24:04

回答

0

你提到的代碼工作正常使用Qt 4.6.1和4.4.1 GCC在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 
$ 

所以你的問題可能通過升級到4.6.1的Qt固定。 (除非它是編譯器特定於目標的錯誤,這似乎不太可能;此外,您還沒有告訴我們您正在編譯的平臺。)