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