The possibility of a DLang dynamic transfer class type and a member type.

Paul Backus snarwin at gmail.com
Thu Nov 14 21:03:28 UTC 2019


On Thursday, 14 November 2019 at 08:47:15 UTC, zoujiaqing wrote:
> Like main function's code:
>
> [...]
>
> void main()
> {
>     Type class1;
>     Type class2;
>
>     class1 = A;
>     class2 = B;
>     class3 = A;
>
>     auto obj1 = new class1;
>     auto obj2 = new class2;
>
>     if (true)
>     {
>         Base obj = cast(Base) obj1;
>         writeln(obj.count());
>
>         Base obj = cast(Base) obj2;
>         writeln(obj.count());
>     }
>
>     assert(checkClass(class1, class2));
>     assert(checkClass(class1, class3));
>
>     test(A, A.a, B.b);
> }
> ```

You can do something pretty similar with TypeInfo:

void main()
{
     TypeInfo_Class class1;
     TypeInfo_Class class2;

     class1 = typeid(A);
     class2 = typeid(B);

     auto obj1 = class1.create;
     auto obj2 = class2.create;

     if (true)
     {
         {
         	Base obj = cast(Base) obj1;
         	writeln(obj.count()); // 1
         }
         {
         	Base obj = cast(Base) obj2;
         	writeln(obj.count()); // 2
         }
     }
}


More information about the Digitalmars-d mailing list