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