내 프로그램에서 main() 입력하기 전에 할당 할 클래스가 있습니다. 나는 내 코드에서 혼란을 피하기 위해 이것을 별도의 모듈에 넣어두고 싶다; 그러나 main()이 입력되기 전에 모듈이 범위를 벗어나 자마자 객체가 할당 해제되어 main에서 null 참조를 사용하려고합니다. 짧은 예 : C++ 및 Java의 클래스에 반대정적 초기화 및 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;
}
}
나는 아직도, 캡슐화의 기본 단위 인 모듈의 개념에 익숙해 있어요. 이것이 D에서 할 수 있습니까? 아니면 메인 모듈로 초기화해야합니까? 여기
코드가 작동합니다. 문제는 다른 곳에서 발생할 가능성이 큽니다. –