www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Is this actually valid code?

reply Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
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?
Nov 06 2011
next sibling parent Trass3r <un known.com> writes:
 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
Nov 07 2011
prev sibling next sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
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
Nov 07 2011
prev sibling next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
Cool stuff, thanks guys. This thing kicks some serious C++ ass. ^^
Nov 07 2011
prev sibling next sibling parent Trass3r <un known.com> writes:
 Cool stuff, thanks guys. This thing kicks some serious C++ ass. ^^

How? You can use using in C++ to do the same.
Nov 07 2011
prev sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
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
Nov 07 2011