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