digitalmars.D.bugs - [Bug 177] New: remove inheritance protection
- d-bugmail puremagic.com (24/24) Jun 06 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=177
- d-bugmail puremagic.com (10/10) Jun 09 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=177
- d-bugmail puremagic.com (23/23) Jun 09 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=177
http://d.puremagic.com/bugzilla/show_bug.cgi?id=177 Summary: remove inheritance protection Product: D Version: unspecified Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: benoit tionex.de Every class in D is inherit from the class 'Object'. D does not support multiple inheritance. But if I do this: class D{ } class T : private D { } Now this invariant is not true any more. The functionality from Object is no more visible to a user of T. e.g. container can complain, they cannot access opEqual. I think the D spec is not logic in this point and the inheritance protection should be removed. --
Jun 06 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=177 bugzilla digitalmars.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID If one needs to access members of the base class, it shouldn't be marked as private. The compiler behaves as designed to for private base classes. --
Jun 09 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=177 benoit tionex.de changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|INVALID | Is this a misunderstanding? From the D-spec, section classes, first paragraph: "The object-oriented features of D all come from classes. The class hierarchy has as its root the class Object. Object defines a minimum level of functionality that each derived class has, and a default implementation for that functionality." Now, if one inherits protected or private from any class, the class 'Object' is no more visible. Thats my point. The compiler does it job right, but the spec is not logic in this point. The second argument for removing this protection is that this doesn't make sense in a language without multiple inheritance. E.g. java does not have this protected. I think exactly because of this. Private inheritance is good for a "implemented with" relation. This makes sense in C++, not in D. In D, a possible way is using mixins. (if bug 106 is fixed ;) ) --
Jun 09 2006