C#의 집계에 몇 가지 문제가 있습니다. 이러한 클래스 중 하나를 인스턴스화 할 필요가있을 때매개 변수가없는 집계 관계
이 유일한 문제는namespace ShapeDrawing
{
public abstract class Shape
{
protected Drawing myDrawing;
public Shape(Drawing drawing)
{
myDrawing = drawing;
}
}
public abstract class Drawing
{
public abstract void drawLine();
public abstract void drawCircle();
}
}
, 모양의 서브 클래스는 매개 변수로 지금 그리기있다 : 바로 지금, 나는 다음과 같은 코드가 있습니다. 유일한 문제는 (프로그램의 추론으로 인해) 해당 클래스에 대한 매개 변수로 드로잉을 제공 할 수 없다는 것입니다.
그리기를 Shape의 하위 클래스에 대한 매개 변수로 사용하지 않고 집계를 만드는 방법이 있습니까?
내가 그랬어[FIRST 답변으로 업데이트], 그러나 나는 다음과 같은 문제를 얻는다.
public override void draw()
{
myDrawing.drawCircle(x, y, size);
}
이 방법이 runned 경우, myDrawing에 문제가 : 모양의 내 서브 클래스 중 하나에서 나는 다음과 같은 방법이있다. 내가 오류는 다음과 같습니다
"NullReferenceException이 처리되지 않은했다 'System.NullReferenceException'는 ShapeDrawing.exe에서 발생 유형의 처리되지 않은 예외입니다."나는이 문제를 해결하려면 어떻게
?
감사합니다, Joren
유일한 이유를 사용하지 않는 생성자을하기 위해선, 파생 클래스를 수 있도록했다입니다 일반적인 생성자 논리 (코드)이므로 파생 클래스가 그렇게하지 못하게하려면 클래스가 호출하지 않으며 'myDrawing'이 초기화되지 않습니다. –
이제 모든 생성자 메서드에서 언급되지 않았으므로 myDrawing이 null 인 문제가 있습니다. 또한, Drawing은 추상 클래스이기 때문에 myDrawing을 초기화 할 수 없습니다. – jorenwouters