<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>><span style="color:rgb(33,33,33); font-size:13.3333px">Note that I think we should change QPolygon to stop inheriting from QVector in </span></p>
<p><span style="color:rgb(33,33,33); font-size:13.3333px"></span>><span style="color:rgb(33,33,33); font-size:13.3333px">the first place. QPolygon is not a QVector.</span></p>
<p><span style="color:rgb(33,33,33); font-size:13.3333px"><br>
</span></p>
<p><span style="color:rgb(33,33,33); font-size:13.3333px">But then a vector is not a collection.</span></p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Development <development-bounces+martin.smith=qt.io@qt-project.org> on behalf of Thiago Macieira <thiago.macieira@intel.com><br>
<b>Sent:</b> Saturday, March 25, 2017 4:29:09 PM<br>
<b>To:</b> development@qt-project.org<br>
<b>Subject:</b> Re: [Development] QList</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On sábado, 25 de março de 2017 00:57:57 PDT Marc Mutz wrote:<br>
> On 2017-03-24 20:55, Thiago Macieira wrote:<br>
> > Em sexta-feira, 24 de março de 2017, às 09:18:05 PDT, Marc Mutz<br>
> > <br>
> > escreveu:<br>
> >> > Are you of the opinion that private inheritance has no purpose and<br>
> >> > should<br>
> >> > never be used?<br>
> >> <br>
> >> No, and if you look at code I have written over the years, you will<br>
> >> see that<br>
> >> I do use it.<br>
> >> <br>
> >> One thing I've looked into in the past is this: Q6Polygon should<br>
> >> inherit a<br>
> >> Q6VectorBase<QPoint> that also Q6Vector<QPoint> inherits. This will<br>
> >> allow<br>
> >> easy specialisation of QVector<T*> by inheriting QBasicVector<const<br>
> >> void*>.<br>
> > <br>
> > Can you elaborate on your thinking? What's QBasicVector and what's<br>
> > QVector?<br>
> <br>
> QBasicVector (or QVectorBase, or ...) is QVector with protection against<br>
> using it as-is (e.g. protected dtor). QVector inherits QBasicVector to<br>
> lift the restriction. This inheritance may even be public to avoid lots<br>
> of using QBasicVector::foo; This is ok, because QBasicVector is not<br>
> usable as-is, but I'd still make it private, because when you start to<br>
> inherit to specialise (QVector<T*> : QBasicVector<const void*>), you<br>
> don't want the void* methods to leak.<br>
> <br>
> So, if you absolutely are set on inheritance, then use the same pattern.<br>
> But I don't see this here. None of the points that makes this a good<br>
> idea for QVector (or QVLA) pertains to QString: we don't need to fight<br>
> template bloat, we don't have multiple classes inheriting QStringView...<br>
<br>
And what are the points that make QBasicVector good? If QBasicVector is not <br>
usable as-is, then it must be useful because it's sharing code between QVector <br>
and something else. What is that something else?<br>
<br>
Note that I think we should change QPolygon to stop inheriting from QVector in <br>
the first place. QPolygon is not a QVector.<br>
<br>
-- <br>
Thiago Macieira - thiago.macieira (AT) intel.com<br>
  Software Architect - Intel Open Source Technology Center<br>
<br>
_______________________________________________<br>
Development mailing list<br>
Development@qt-project.org<br>
<a href="http://lists.qt-project.org/mailman/listinfo/development">http://lists.qt-project.org/mailman/listinfo/development</a><br>
</div>
</span></font>
</body>
</html>