[Development] Converting types in Qt

Ziller Eike Eike.Ziller at digia.com
Thu Jul 17 10:51:03 CEST 2014


On Jul 16, 2014, at 1:45 PM, Poenitz Andre <Andre.Poenitz at digia.com> wrote:

> Olivier Goffart wrote:
>> Jędrzej Nowacki wrote:
>> [...]
>>>> What is wrong with string -> int or bytearray -> int?
>>> 
>>> At the very least, _implicit_ conversions should not lose data,
>>> i.e. a  A a1;  B b = a1; A a2 = b; round trip ideally should yield
>>> a1 == a2.
>>> 
>>> If I am ready to give up information, I'd like to need to say so
>>> in the code explicitly. (And yes, part of the deed is done in the
>>> core language, but even there compilers start to nag about it.)
> 
>> André, QVariant conversions are not implicit, they are explicit.
> 
> I am aware of that. I tried to answer the question of "What is wrong 
> with string -> int or bytearray -> int”. 

QVariant::operator== is not symmetric :( :( :(

     QDateTime dateTime = QDateTime::currentDateTime();
    QTime time = dateTime.time();

    qDebug() << (QVariant(dateTime) == QVariant(time));
    qDebug() << (QVariant(time) == QVariant(dateTime));

-->
false
true

> We admittedly left the original context here (and in other parts of the 
> discussion), but the question was posed in context that I read an 
> example of an conversion that one would always consider convenient
> to have, and I started with "At the very least, _implicit.." supposedly 
> setting the context of the answer.
> 
> Anyway. To summarize my position in the original context: QVariant 
> is as it is. It is convenient at times, and it is already too convenient 
> at times. "Easy type conversion" is a different use case than "Type 
> agnostic storage". QVariant does a bit of both, only the second one
> has ever been useful _to me_, I have been bitten by the first. As 
> there are typically also more direct ways to convert types than to 
> pass through QVariant, I consider the possibility to do type conversion
> through QVariant a mis-feature, and adding even more conversion 
> abilities would be a step into the wrong direction _for me_. This is 
> a personal opinion.
> 
> Andre'

-- 
Eike Ziller, Senior Software Engineer - Digia, Qt
 
Digia Germany GmbH, Rudower Chaussee 13, D-12489 Berlin
Geschäftsführer: Mika Pälsi, Juha Varelius, Tuula Haataja
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 144331 B




More information about the Development mailing list