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...

Thanks,
Marc
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to