В моей программе у меня есть класс, который я хочу выделить перед вводом main (). Я хотел бы убрать их в отдельный модуль, чтобы избежать беспорядка в моем коде; Однако, как только модуль выходит из области видимости (до входа в main ()), объекты освобождаются, и я пытаюсь использовать нулевую ссылку в main. Краткий пример:
// 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, или я должен перенести мои инициализации в основной модуль?