2011-04-08 2 views
0

Base<T>에서 파생 된 클래스 Derived<T>이 있습니다. 다음 중 단정 또는 거짓 중 어느 것입니까? 이 경우 사전제네릭 및 상속 관련 질문

+0

이런 소리는 숙제 –

+0

으로 태그해야합니다. 숙제가 아닙니다. 나는 심지어 학생도 아니다. 나는 C++의 단순함을 놓친다. 템플릿은 정교하고 (다소 복잡한) 매크로가 아니다. (그러나 런타임에 존재하지 않았기 때문에 템플릿에 대해서는 테스트 할 수 없었습니다.) : S – pyon

+0

코드를 실행하지 않는 이유는 무엇입니까? – Linkgoron

답변

0

에서

typeof(Derived<SomeType>).IsSubclassOf(typeof(Base<SomeType>)) 
typeof(Derived<>)  .IsSubclassOf(typeof(Base<SomeType>)) 
typeof(Derived<SomeType>).IsSubclassOf(typeof(Base<>)) 
typeof(Derived<>)  .IsSubclassOf(typeof(Base<>)) 

감사합니다, 첫 번째 :

typeof(Derived<SomeType>).IsSubclassOf(typeof(Base<SomeType>)) 

다른의 당신이 그것을하지 않고 일반적인 참조 할 수 없습니다 컴파일 -하지가의 형식 인수, 예를 들어,

Something<> 
+0

@Chris Slain : 틀린! 'typeof (Derived <>)'는 유효한 코드입니다. 사실, 나는 ** 거대한 ** 메타 프로그래밍 프레임 워크를 쓰고 있는데, ** 런타임시 제네릭을 참조 할 수있을 때 ** RELIES **이다. 더 많은 정보 : http://msdn.microsoft.com/en-us/library/58918ffs.aspx – pyon

+0

나는 교정했다 - 당신은 그것을 컴파일 할 수있다. 그러나 그 대답은 아직도 # 1입니다. –

+0

@Chris Shain : 죄송합니다. 저는 귀하의 이름을 잘못 (사실, 놓치기) 했었습니다. – pyon