| Thread overview | ||||||||
|---|---|---|---|---|---|---|---|---|
|
November 07, 2011 Is this actually valid code? | ||||
|---|---|---|---|---|
| ||||
I've had a simple problem where I've only wanted to override a setter from a base class:
class Foo
{
@property void test(int) {}
@property int test() { return 1; }
}
class Bar : Foo
{
override @property void test(int) {}
void bartest() { auto x = test; } // NG
}
test.d(19): Error: function test.Bar.test (int _param_0) is not
callable using argument types ()
So I thought I'd be clever:
class Foo
{
@property void test(int) {}
@property int test() { return 1; }
}
class Bar : Foo
{
alias super.test test;
override @property void test(int) {}
void bartest() { auto x = test; }
}
And it actually works! Is this a documented feature?
| ||||
November 07, 2011 Re: Is this actually valid code? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrej Mitrovic | > class Foo > { > @property void test(int) {} > @property int test() { return 1; } > } > > class Bar : Foo > { > alias super.test test; > override @property void test(int) {} > void bartest() { auto x = test; } > } > > And it actually works! Is this a documented feature? http://d-programming-language.org/hijack.html | |||
November 07, 2011 Re: Is this actually valid code? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrej Mitrovic | On Sun, 06 Nov 2011 23:10:57 -0500, Andrej Mitrovic <andrej.mitrovich@gmail.com> wrote: > I've had a simple problem where I've only wanted to override a setter > from a base class: > > class Foo > { > @property void test(int) {} > @property int test() { return 1; } > } > > class Bar : Foo > { > override @property void test(int) {} > void bartest() { auto x = test; } // NG > } > > test.d(19): Error: function test.Bar.test (int _param_0) is not > callable using argument types () > > So I thought I'd be clever: > > class Foo > { > @property void test(int) {} > @property int test() { return 1; } > } > > class Bar : Foo > { > alias super.test test; > override @property void test(int) {} > void bartest() { auto x = test; } > } > > And it actually works! Is this a documented feature? http://www.d-programming-language.org/function.html#function-inheritance Look at the third example/description. -Steve | |||
November 07, 2011 Re: Is this actually valid code? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | Cool stuff, thanks guys. This thing kicks some serious C++ ass. ^^ | |||
November 07, 2011 Re: Is this actually valid code? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Andrej Mitrovic | > Cool stuff, thanks guys. This thing kicks some serious C++ ass. ^^
How? You can use using in C++ to do the same.
| |||
November 07, 2011 Re: Is this actually valid code? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Trass3r | On 11/7/11, Trass3r <un@known.com> wrote:
>> Cool stuff, thanks guys. This thing kicks some serious C++ ass. ^^
>
> How? You can use using in C++ to do the same.
>
My bad. I was a bit over-excited there. :p
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply