<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 22 Sep 2014, at 16:44, Peter Popov wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Monaco; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="font-family: monospace; ">Another comment: If referenced objects all derive from a single base, then, the user cannot possibly have another hierarchy, which uses ref. objects. As I mentioned earlier, I do this explicitly for an object well down my hierarchy. So, it seems to me you still need something like:<br><br>-- code --<br><br><br>TRefObject = referenced class(TWhateverBase)<br>end;<br></span></span></blockquote></div><br><div>I would strongly recommend against that. Referenced and unreferenced objects are completely different beasts with different behaviours. If you allow that, you get all kinds of problems down the line. E.g. you either have to forbid assigning a <span class="Apple-style-span" style="font-family: monospace; ">TRefObject to a </span><span class="Apple-style-span" style="font-family: monospace; ">TWhateverBase (which runs counter to a very basic OOP principle), or allow it and then have the programmer deal with the resulting reference counting mess-ups.</span></div><div><br></div><div>Just like Objective-C and C++ classes cannot derive from each other, and just like Delphi-style classes and TP-style objects and objcclass and cppclass cannot derive from each other, so should reference counted and non-reference counted classes not be able to derive from each other. If you want to mix reference counted and non-reference counting functionality, use the existing interface-based pattern instead, or possibly some kind of delegation pattern.</div><div><br></div><div><br></div><div>Jonas</div></body></html>