在我的程序中,我有一个要在进入 main() 之前分配的类。我想把这些放在一个单独的模块中,以防止我的代码杂乱无章;但是,一旦模块超出范围(在进入 main() 之前),对象就会被释放,让我尝试在 main.xml 中使用空引用。一个简短的例子:
// 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 中完成,还是必须将我的初始化移动到主模块?