Si je fais quelque chose commeComment appeler un constructeur à partir d'un modèle mixin mixedin
mixin template T() {
float y;
this(float y_){
y = y_;
}
}
class C {
mixin T!() t;
int x;
this(int x_, float y_){
x = x_;
this(y_);
}
}
//
C c = new C(5, 7.0f);
Cela donne l'erreur constructor C.this (int x_, float y_) is not callable using argument types (float)
. Sur la ligne qui contient this(y_);
dans le constructeur de C, ce qui semble impliquer que C ne peut pas voir le constructeur importé de T. Bien, il devrait. Il est évident que t.this(...)
et T!().this(...)
ne fonctionnent pas.
La solution la plus évidente que je peux penser est comme (proxy):
template T(...) {
void constructor(...){...}
this(Args...)(Args args){ constructor(args); }
}
...
class C {
mixin T!() t;
this(...){
t.constructor(...);
}
}
Mais qui aspire parce qu'il met plus de frais généraux de connaissances sur T (en utilisant le constructeur exige de faire quelque chose de spécial)
Existe-t-il un moyen d'appeler le constructeur de t de manière non-bizarre (et non-spécifique)? Aussi, est-ce un bug? Si non, pourquoi cela fonctionne-t-il de cette façon?