私のプログラムでは、main()を入力する前に割り当てたいクラスがあります。私は別のモジュールでこれらを取り除き、自分のコードから混乱を避けたいと思います。しかし、モジュールがスコープから外れると(main()が入る前に)、オブジェクトは割り当てが解除され、mainにnull参照を使用しようとしています。短い例:静的初期化とDの別のモジュールでのクラスの使用
// main.d
import SceneData;
int main(string[] argv)
{
start.onSceneEnter();
readln();
return 0;
}
// SceneData.d
import Scene;
public
{
Scene start;
}
static this()
{
Scene start = new Scene("start", "test", "test";
}
// Scene.d
import std.stdio;
class Scene
{
public
{
this(string name)
{
this.name = name;
}
this(string name, string descriptionOnEnter, string descriptionOnConnect)
{
this.name = name;
this.descriptionOnEnter = descriptionOnEnter;
this.descriptionOnConnect = descriptionOnConnect;
}
void onSceneEnter()
{
writeln(name);
writeln(descriptionOnEnter);
}
}
private
{
string name;
string descriptionOnEnter;
string descriptionOnConnect;
}
}
C++とJavaでクラスとは対照的に、私はまだ、カプセル化の基本単位であるモジュールの概念に慣れますよ。これはDで行うことができますか、または私はメインモジュールに私の初期化を移動する必要がありますか?ここで
コードは機能します。あなたの問題はおそらく他の場所にあります。 –