Re: Forwarding constructor arguments to super

2010-06-14 Thread bearophile
pillsy:
 Is there a good way to forward constructor arguments to a superclass 
 constructor?

This seems to work for simple situations, but maybe it doesn't work in more 
complex cases:


import std.traits: ParameterTypeTuple;

mixin template This() {
this(ParameterTypeTuple!(super.__ctor) args) { super(args); }
}

class Foo {
int _x;
float _f;

this(int x, float f) {
this._x = x;
this._f = f;
}
}

class Bar : Foo {
mixin This;
}

void main() {
auto b = new Bar(10, 1.5);
}

Bye,
bearophile


Forwarding constructor arguments to super

2010-06-12 Thread pillsy
Is there a good way to forward constructor arguments to a superclass 
constructor? I.e., if I have
something like this

class Foo {
  int _x;

  this (int x) { _x = x; }
}

class Bar : Foo {}

I'd like to able to have this just work:

auto bar = new Bar(3);

However, doing this means that DMD complains that Bar.this isn't callable with 
an int argument. The
next thing I tried was

class Bar : Foo
{
  this (Args) (Args... args) { super(args): }
}

at which point DMD complains that constructor Bar.this conflicts with template 
Bar.__ctor(Args...). I'm
using DMD 2.046, if it matters.

Thank you,
Pillsy