라이브러리에 여러 생성자가있는 C # 포인트 클래스가 있습니다 (이 클래스는 .NET의 System.Drawing.Point와 다른 클래스).
Public class Point {
public float X;
public float Y;
public float Z;
//Constructor 1
public Point(float x, float y, float z) {
this.X = x;
this.Y = y;
this.Z = z;
}
//Constructor 2
public Point(Point point) {
this.X = point.X;
this.Y = point.Y;
this.Z = point.Z;
}
//Constructor 3
public Point(PointF point) {
this.X = point.X;
this.Y = point.Y;
this.Z = 0;
}
//Constructor 4
public Point(System.Drawing.Point point) {
this.X = point.X;
this.Y = point.Y;
this.Z = 0;
}
}
매개 변수로 Point
받는 생성자를 사용하여 새 개체 를 만들려고하면 float
모든 것이 잘 작동합니다. Point
기존 Point
개체 (생성자 2) 를 사용하여 새로 만들려고 할 때 System.Drawing
어셈블리 를 참조해야한다는 오류가 표시됩니다 . 나는 이것이 a System.Drawing.Point
와 a PointF
를 인수로 사용 하기 때문에 생성자 3과 4 때문이라고 생각 하지만, 내가 사용하려는 생성자가 그들과 완전히 관련이 없기 때문에 왜 문제를 제기 해야하는지 모르겠습니다. 1이 호출되면 잘 작동합니다. 이 문제를 어떻게 해결합니까? 감사!
수락 할 수있는 경우 이에 대한 해결 방법이 있습니다.
Point
수업에 다음을 추가하십시오 .
public static Point Clone(Point p)
{
return new Point(p);
}
그런 다음 현재 컴파일에 실패한 코드에서 대신 다음을 수행하십시오.
Point p = new Point(0, 0, 0);
Point q = Point.Clone(p);
(물론, 당신은 방법을 호출 할 필요가 없습니다 Clone()
- 그것은 전화 Copy
또는 CopyCtor
나처럼 당신이 무엇을.)
에 관해서는 왜 컴파일러는 당신이 당신도 사용하지 않는 것을 어셈블리 정의 유형에 대한 참조를 포함해야한다는 주장 이 답변을 참조 .
또한 이 질문을 참조하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다