2014-10-20 70 views
-5

Debian使用內核3.16-2-amd64和KDE 4.14.1進行測試。不交叉編譯。使用cmake。prefsdialogimpl.cpp:61:18:警告:比較帶符號和無符號整數表達式[-Wsign-compare]

試圖重振老的KDE應用程序,但:

[ 80%] Building CXX object CMakeFiles/knet.dir/prefsdialogimpl.o 
/usr/local/src/knet/prefsdialogimpl.cpp: In member function ‘void PrefsDialogImpl::setDeviceChoices(QVector<QString>)’: 
/usr/local/src/knet/prefsdialogimpl.cpp:61:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] 
for(uint i=0; i<choices.count(); i++) 

相關功能如下:

void PrefsDialogImpl::setDeviceChoices(QVector<QString> choices) 
{ 
    for(uint i=0; i<choices.count(); i++) 
     diagram_deviceComboBox->insertItem((choices[i]), i); 
} 

和整個文件,prefsdialogimpl.cpp,是在這裏:https://pastee.org/fhb3u

我沒有找到無符號整數的位置,也不知道如何解決它。我是新的C++,但正在學習。

+1

歡迎來到Stack Overflow。你忽略了問一個問題。請[編輯]你的問題,包括一個完整的句子,告訴你面臨的問題。你提供了一個編譯器錯誤;什麼阻止你修復它? – 2014-10-20 19:04:44

+0

警告清楚地告訴您它在哪裏出現問題。我猜想'choices.count'會返回一個(帶符號的)整數值,你可以用'uint'來比較 – UnholySheep 2014-10-20 19:23:53

回答

1

如果您查找the documentation for QVector::count(),您會看到count返回一個帶符號的整數值。將此值與您的iuint)進行比較時,會發生符號不匹配。

您可以通過將i的定義更改爲int i來修復此差異。

+0

非常好,謝謝Magnus。我不明白,雖然這個相同的陳述被用於圍繞這一個的三個功能,但它們並沒有失敗。我將它們設置爲整數,然後他們得到簽名/未簽名的錯誤。 – Bill 2014-10-20 19:34:12

+0

@Bill當然不一樣。這個功能和其他功能有什麼區別? 「選擇」有不同的類型。這怎麼能起作用?因爲,'count'函數是不同的。去查找另一個'count'函數的文檔,找出差異的原因。查找文檔應該是第二性質,尤其是在您學習時,並且我認爲您僅僅因爲沒有查閱文檔而得到一些提示。以此作爲訓練練習;):) – 2014-10-22 11:44:06

相關問題