alias this and outer
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Sun Apr 13 09:43:15 PDT 2014
Hello all,
Is there any reason why using,
alias this.outer this;
should not be possible in nested classes? Consider the following example:
//////////////////////////////////////////
import std.stdio;
class A
{
class B
{
auto bar() @property
{
return this.outer.n;
}
}
private int n;
public B foo;
this(int n)
{
this.n = n;
this.foo = new B;
}
}
void main()
{
auto a = new A(22);
writeln(a.foo.bar);
}
//////////////////////////////////////////
... which works fine; but if I replace the declaration of the nested class B with,
class B
{
alias this.outer this;
auto bar() @property
{
return n;
}
}
then I get a compiler error:
aliasouter.d(7): Error: semicolon expected to close alias declaration
aliasouter.d(7): Error: found ';' when expecting '('
aliasouter.d(8): Error: function declaration without return type. (Note that
constructors are always named 'this')
aliasouter.d(9): Error: found '{' when expecting ')'
aliasouter.d(10): Error: semicolon expected following function declaration
aliasouter.d(10): Error: Declaration expected, not 'return'
aliasouter.d(23): Error: unrecognized declaration
Is there an actual reason why "alias this.outer this;" should not be allowed (in
which case, surely the error message should be more explicit), or is this a bug?
Thanks and best wishes,
-- Joe
More information about the Digitalmars-d-learn
mailing list