去人たち開発ブログ

同人サークルK2Ceeが去人たち開発についての記事を掲載してきます!

D言語最新版

さて、とりあえず、yaneSDK4Dを最新版に対応させようと思って立ち上がった。
テンプレートの周辺で大量にエラーが発生しているので、大変なことになるんやないかとおもっていた。
バックアップをとって(←すごく単純だが恐ろしく大事な作業)、DMDの最新版でコンパイル
いきなし、よくわからないエラーがでる。


class y4d_sound.soundloader.SoundLoader.SoundInfo super class Info is nested within CacheLoader, not SoundLoader

CacheLoaderの内部クラスのInfoは CacheLoaderの内部クラスだけど、SoundLoaderの内部クラスじゃないんぢゃ!
と言われてしまった。
SoundLoaderはCacheLoaderを継承しているから、その内部クラスも継承されているはずからだ、内部クラスの継承だってでけるやろう。

D言語のドキュメントをみると、わかった。
非staticの内部クラスは、thisが有効な場所で宣言されてないと周辺のコードにアクセスできひんから、だめ!っていうのだ。
内部クラスのくせして、周囲のコードにアクセスできる利便性は、ちょっといいかなって思う。でも、どんな風につこうたら便利なのかはよくわからんかった。
とにかく、今まで内部クラスが宣言されていたコンテクストはstaticなので、内部クラスを全部staticにしたらコンパイルOK.

あ、意外と早く修正できた。
Reflectionクラスが動かなくなってた...
これはshinさんのコードは、わたしにはまだ高級すぎて、よくわらんないや...
とりあえず、動きましたよ、と。