2016-04-15 17 views
5

Qt Framework QVariant tipi karşılaştırma operatörlere <, <=, >, >= sunar, ancak bunlar imzalı/imzasız tamsayı argümanlar uyumsuzluğu beklenmedik çalışır: bu bir hata ise/imzasız karşılaştırmaları

QVariant(-1) < QVariant(0u) yields false 
QVariant(0u) > QVariant(-1) yields false 

bilen var mı, ya da Bu amaçlanan? Bu işlevsellikler her zaman şarkı/imzasız uyumsuzluğa yanlış mı dönüyor?

Btw, ben Qt 5.6

cevap

3

QVariant(-1) < QVariant(0u) kullanıyorum arayacak dahili int ve unsigned int ait Karşılaştırıcıların. Temel olarak, (int(-1) < uint(0)) == false (ve here neden açıklanmıştır). QVariant(-1).toInt() < QVariant(0u).toInt() == true

: Farklı davranış istiyorsanız

, toInt() veya benzeri yöntemlerle açıkça karşılaştırma önce değerlerini dönüştürmek

İlgili konular