Waldek Hebisch wrote:
In Delphi each class is a descendant of TObject. TObject has a predefined constructor called Create. As I wrote ATM the most visible difference between OOE/Delphi and our current implementation of classes is that we do not implement Root/TObject.
I belive that we can use a single type as both Root and TObject. Namely, TObject has more methods, but if we allow silent shadowing then the extra methods will be invisible to OOE programs.
But OOE doesn't allow silent shadowing (i.e., without `override'), does it? Do you propose to make a special exception for those particular methods?
What would a common base type gain us? Existing code will always use the features of the base type of the model used, and not more. At least OOE doesn't allow multiple inheritance (what about Delphi?), apart from "property classes" which don't have a base type, so mixing of classes derived from different base types via multiple inheritance also doesn't seem a real issue to me.
Peter N Lewis wrote:
Ok. Mac objects don't have any concept of Root or TObject base object (various class library frameworks have implemented their own base object, but that is a code level issue).
Same for BP OOP.
I guess as long as there is no significant overhead it would not matter if there was some invisible Root/TObject/base object, although personally I'd prefer to avoid it,
Me too (for BP OOP). I see no problem to add an implicit ancestor if no explicit one is given in Delphi and OOE, and not do so in the other two models.
Frank