TypeInfo for highest type in hierarhy (class) when passed base type

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Mar 16 01:46:29 PDT 2016


On 03/16/2016 01:03 AM, Voitech wrote:
 > How to handle this situation:
 > module typeTest;
 >
 > class A{
 >
 >      void a(){}
 > }
 >
 > class B:A{
 >      int b(){
 >          return 1;
 >      }
 >
 > }
 >
 > class C:B,D{
 >      string c(){
 >          return "";
 >      }
 >      override int d() {
 >          return 0;
 >      }
 > }
 >
 > interface D{
 >      int d();
 > }
 > TypeInfo __typeInfo(T)(T t){
 >      return typeid(T);

typeid() can take types and expressions. You need to replace T with t 
because T is always A in your tests. This works:

     typeid(t);

Ali

 > }
 >
 > unittest{
 >      A a= new A;
 >      A b= new B;
 >      A c = new C;
 >
 >      TypeInfo aInfo=__typeInfo(a);
 >      TypeInfo bInfo=__typeInfo(b);
 >      TypeInfo cInfo=__typeInfo(c);
 >
 >      assert(aInfo!=bInfo); //fails
 >      assert(aInfo!=cInfo);//fails
 >      assert(bInfo!=cInfo);//fails
 >
 > }



More information about the Digitalmars-d-learn mailing list