On sábado, 18 de março de 2017 14:33:32 PDT Marc Mutz wrote: > On Saturday 18 March 2017 19:30:35 Thiago Macieira wrote: > > class QStringView - has all the const functions > > class QString : public QStringView - adds the mutating functions > > class QtExclusive::QString : public QString > > No inheritance. These things have no is-a relationship whatsoever.
Right, I came to the same conclusion in the shower after posting this and then forgot to post once I was out. > Example: QString cannot inherit QStringView because QStringView::trimmed() > returns a QStringView while QString::trimmed() needs to return a QString. I don't see why you need to. If you called the object as QStringView, then you get QStringView too. My problem was the exclusive kind, because you could then do: QtExclusive::QString es; QString &s = es; s = somethingElse(); // es could now be sharing, which is a violation > These return values aren't covariant, either, because a) they're not > pointers, so C++ doesn't let you, b) the functions aren't virtual so C++ > won't let you and c) the QStringView implementation has no idea how to > manage QString's memory. Covariants are only needed if they were virtual. They're not, they can be just pure overrides. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development