Class-Inheritancing Error

user1234 user1234 at 12.de
Sun Jul 27 17:02:35 UTC 2025


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:
>> 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

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 with

> Error: class `Someone` cannot implicitly generate a default 
> constructor when base class `Person` is missing a default 
> constructor



More information about the Digitalmars-d-learn mailing list