Reply to Brian,

I want to use a chaining system for easy setting of object attributes,
which would work great for a single object, unfortunately derived
classes cannot inherit the chained functions implicitly, whats the
best way around this?

class Base {
int x;
Base foo(int x_) {
this.x = x_;
return this;
}
}
class Derived : Base {
Derived bar(int y_) {
return this;
}
}
// usage:
auto m = (new Derived).foo(10).bar(x); // bar can be accessed through
foo



mixins:


template BaseT(){
   typeof(this) foo()(int x_) {
       this.x = x_;
       return this;
   }
}
class Base {
   int x;
   mixin BaseT!();
}

template DerivedT()
{
   typeof(this) bar(int y_) {
       return this;
   }
   mixin BaseT!();
}
class Derived : Base {
   mixin DerivedT!();
}

void main()
{
int x;
// usage:
auto m = (new Derived).foo(10).bar(x); // bar can be accessed through foo
}


Reply via email to