4
2 개가 아닌 하나의 생성자를 작성하고 일반 오브젝트와 변경 불가능한 오브젝트를 모두 작성할 수 있습니까? 정상 생성자와 불변 생성자를 모두 작성하는 것은 반복적 인 작업입니다.D에서 불변 및 일반 생성자를 결합 하시겠습니까?
class ExampleClass
{
void print() const
{
writeln(i);
}
this(int n)
{
i = n * 5;
}
this(int n) immutable
{
i = n * 5;
}
private:
int i;
}
당신이 맞아요,이 예제의 경우 작동합니다. 그러나 내 실제 사용 예에서 glCreateShader와 같은 불순한 함수를 호출해야 솔루션이 작동하지 않습니다. :/ – Scintillo
@Scintillo이 경우, 당신은 실제로 불변의 객체를 생성하고 있습니까? 그것은 돌연변이를 허용 할 것 같은데,이 경우 당신은 불변의 인스턴스를 만드는 것을 금지 할 수 있습니다. – Cubic
@Cubic OpenGL은 리소스를 변경할 수 없기 때문에 객체를 변형 할 수 있습니다. Immutable은 리소스 ID 래퍼 포인트를 변경하지 못하도록하고 "이 객체를 수정하지 마십시오."라는 지침이됩니다. – Scintillo