[Development] Lack of base classes/interfaces? Q*, Q*F

Jason H jhihn at gmx.com
Mon Apr 17 08:02:15 CEST 2017


Maybe templates are the way to go. But I just had to change some lines because I was using vectors and Qt was using QList. I'd like to eliminate the need/cost for QList::toVector() and QVector::toList(). If there was a base that provided the basics so that I don't have to worry about it's representation in my code, I want the developer (usually me, but anyone using my functions) to be the one that makes that decision. 

You're right I don't know how C++ handles virtuals, but should I care? This is OOP, I want to use OOP. You're telling me that because the language/compiler implements something poorly, that I can't use OOP?


> Sent: Sunday, April 16, 2017 at 11:44 PM
> From: "Thiago Macieira" <thiago.macieira at intel.com>
> To: development at qt-project.org
> Subject: Re: [Development] Lack of base classes/interfaces? Q*, Q*F
>
> Em domingo, 16 de abril de 2017, às 18:25:49 PDT, Jason H escreveu:
> > I am wondering why all the Q* and Q*F classes (where $1 in [Rect, Point,
> > etc]) don't use an interface? I recently moved some code from ints to
> > floats, and I had to change far more code than I should have had to.
> 
> If you're thinking of a template class and make each of those just an 
> instantiation of the template, it could be done, and yet wouldn't help you a 
> lot. Each instantiation is a distinct type. Your code would need to be 
> adapted.
> 
> It wouldn't be easy for us either, as the algorithms are subtly different. The 
> rectangle and size, for example, store the inclusive bottom-right coordinate, 
> whereas the floating point ones store them exclusive.
> 
> If you're thinking of base class with inheritance and virtuals, then you have 
> to learn a lot about C++ efficiency. Those classes are too small for virtuals. 
> It would be bad API design and an incredible overhead for little gain. As I 
> mentioned, the classes have actually little in common between one another.
> 
> > My proposal is to change QRect to QRectI, and make QRect an interface.
> 
> That's a vague suggestion. Make a concrete proposal, please. Without virtuals, 
> of course.
> 
> > I'm not fan of MS's Ieverything, but I think base classes/interfaces are
> > under used in Qt. Why aren't there more of them?
> 
> You are thinking of classes with virtuals. QRect has no virtuals and shall 
> never have them.
> 
> -- 
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
> 
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
>



More information about the Development mailing list