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









d-bugmail puremagic.com 