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