digitalmars.D.learn - Class-Inheritancing Error
- David T. Oxygen (24/24) Jul 27 I wrote a piece of code like this:
- H. S. Teoh (7/32) Jul 27 Can you explain more why do you want to alias super to this? A derived
- user1234 (14/51) Jul 27 Simply because because if OP writes
I wrote a piece of code like this: ```d class Person{ string name; this(string name){this.name=name;} } class Someone:Person{ alias super this; } void main(){ Someone x=new Someone("Bob"); } ``` And then,I got a Error-Message: ``` ab.d(6): Error: variable name expected after type `super`, not `this` alias super this; ^ ab.d(6): `this` is a keyword, perhaps append `_` to make it an identifier ``` Who knows why I can't use `alias this` there? Please tell me,thanks very much. I'm waiting for you.
Jul 27
On Sun, Jul 27, 2025 at 11:08:33AM +0000, David T. Oxygen via Digitalmars-d-learn wrote:I wrote a piece of code like this: ```d class Person{ string name; this(string name){this.name=name;} } class Someone:Person{ alias super this; } void main(){ Someone x=new Someone("Bob"); } ``` And then,I got a Error-Message: ``` ab.d(6): Error: variable name expected after type `super`, not `this` alias super this; ^ ab.d(6): `this` is a keyword, perhaps append `_` to make it an identifier ``` Who knows why I can't use `alias this` there? Please tell me,thanks very much. I'm waiting for you.Can you explain more why do you want to alias super to this? A derived class already inherits its base class's members, there's no need to explicitly alias it. T -- Fact is stranger than fiction.
Jul 27
On Sunday, 27 July 2025 at 15:14:03 UTC, H. S. Teoh wrote:On Sun, Jul 27, 2025 at 11:08:33AM +0000, David T. Oxygen via Digitalmars-d-learn wrote:Simply because because if OP writes ``` class Person{ string name; this(string name){this.name=name;} } class Someone:Person{ } void main(){ Someone x=new Someone("Bob"); } ``` then he gets rewarded withI wrote a piece of code like this: ```d class Person{ string name; this(string name){this.name=name;} } class Someone:Person{ alias super this; } void main(){ Someone x=new Someone("Bob"); } ``` And then,I got a Error-Message: ``` ab.d(6): Error: variable name expected after type `super`, not `this` alias super this; ^ ab.d(6): `this` is a keyword, perhaps append `_` to make it an identifier ``` Who knows why I can't use `alias this` there? Please tell me,thanks very much. I'm waiting for you.Can you explain more why do you want to alias super to this? A derived class already inherits its base class's members, there's no need to explicitly alias it. TError: class `Someone` cannot implicitly generate a default constructor when base class `Person` is missing a default constructor
Jul 27