alias template で以下のように書く方がステキでした。
template getDX(alias A) {
static if (is (typeof(A()))) alias typeof(A()) rettype;
else alias typeof(A) rettype;
rettype getMemberDX() {
return A;
}
}
class Meteorite{
float x; float y; float dx; float dy;
mixin getDX!(dx);
}
class SpaceShip{
float x; float y; int dx_; int dy_;
int idou_kyori_x() {
return dx_;
}
mixin getDX!(idou_kyori_x);
}
int main() {
Meteorite m = new Meteorite();
SpaceShip s = new SpaceShip();
m.dx = 1;
s.dx_ = 2;
printf("%f %d\n", m.getMemberDX(), s.getMemberDX());
return 0;
}