주조 유형 I가 다음과 같은 질문을 읽고 (그리고 나는 주어진 대답으로 같은 방법으로 해결할 것) : Passing derived type as argument to abstract class일반적인 방법과
그러나 이유는 파생 클래스에서 value
속성을 찾을 수 없습니다? 나는 타입 캐스트를 추가해도 그것은 불가능하다 : 타입 캐스트와
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found
return a.value + b.value;
}
public float value;
}
예는 작동하지 않습니다 (그리고 조언 중복 타입 캐스트가 표시됩니다) :
public abstract class baseClass
{
public abstract float function<T>(T a, T b) where T:baseClass;
}
public class derived: baseClass
{
public override float function<derived>(derived a, derived b)
{
// Here value is not found even with type cast
return ((derived)a).value + ((derived)b).value;
}
public float value;
}
예제가 작동 -이 문제를 명명합니다. 제네릭 타입 매개 변수의 이름을 다시'T'로 바꾸면'derived'로 캐스팅 할 수 있습니다. – 2kay
@ 2kay 힌트를 주셔서 감사합니다 –