[Development] QList
Thiago Macieira
thiago.macieira at intel.com
Sat Mar 25 16:29:09 CET 2017
On sábado, 25 de março de 2017 00:57:57 PDT Marc Mutz wrote:
> On 2017-03-24 20:55, Thiago Macieira wrote:
> > Em sexta-feira, 24 de março de 2017, às 09:18:05 PDT, Marc Mutz
> >
> > escreveu:
> >> > Are you of the opinion that private inheritance has no purpose and
> >> > should
> >> > never be used?
> >>
> >> No, and if you look at code I have written over the years, you will
> >> see that
> >> I do use it.
> >>
> >> One thing I've looked into in the past is this: Q6Polygon should
> >> inherit a
> >> Q6VectorBase<QPoint> that also Q6Vector<QPoint> inherits. This will
> >> allow
> >> easy specialisation of QVector<T*> by inheriting QBasicVector<const
> >> void*>.
> >
> > Can you elaborate on your thinking? What's QBasicVector and what's
> > QVector?
>
> QBasicVector (or QVectorBase, or ...) is QVector with protection against
> using it as-is (e.g. protected dtor). QVector inherits QBasicVector to
> lift the restriction. This inheritance may even be public to avoid lots
> of using QBasicVector::foo; This is ok, because QBasicVector is not
> usable as-is, but I'd still make it private, because when you start to
> inherit to specialise (QVector<T*> : QBasicVector<const void*>), you
> don't want the void* methods to leak.
>
> So, if you absolutely are set on inheritance, then use the same pattern.
> But I don't see this here. None of the points that makes this a good
> idea for QVector (or QVLA) pertains to QString: we don't need to fight
> template bloat, we don't have multiple classes inheriting QStringView...
And what are the points that make QBasicVector good? If QBasicVector is not
usable as-is, then it must be useful because it's sharing code between QVector
and something else. What is that something else?
Note that I think we should change QPolygon to stop inheriting from QVector in
the first place. QPolygon is not a QVector.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development
mailing list