完全修飾名

Javaのような完全修飾名でのメソッド呼び出しはできないみたい。
完全修飾してもimportを書く必要があるようだ。

○
private import std.regexp;
linebuf = sub(linebuf, r"\s*//.*$", "");

×
linebuf = std.regexp.sub(linebuf, r"\s*//.*$", "");

Access Violation

interfaceを変えた場合など、依存関係が動いていないとAccess Violationを食らったりする。
よくわからなかったらとりあえずmake clean allで。

lengthに注意

メンバ変数にlengthがあるときにメンバ関数の中で
theta[length-1];
とすると動かなかった。
theta[theta.length-1];
で。

プロパティ

何も考えずにプロパティを書いてはまらないように
float x(){ return pos.x; }
void x(float x){ pos.x = x; }

float y(){ return pos.y; }
void y(float y){ pos.y = y; }

Vec2 pos(){ return Vec2(x, y); }
void pos(Vec2 pos){ pos_ = pos; }

protected Vec2 pos_;
とかすると、pos() -> x() -> pos() -> ... と無限ループ
正しくは、
float x(){ return pos_.x; }
オーバヘッドを考えてもこっちのほうがいいでしょう