View mode: basic / threaded / horizontal-split · Log in · Help
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?
> 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?
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?
Cool stuff, thanks guys. This thing kicks some serious C++ ass. ^^
November 07, 2011
Re: Is this actually valid code?
> 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?
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
Top | Discussion index | About this forum | D home