The possibility of a DLang dynamic transfer class type and a member type.
zoujiaqing
zoujiaqing at gmail.com
Fri Nov 15 09:06:35 UTC 2019
On Thursday, 14 November 2019 at 21:03:28 UTC, Paul Backus wrote:
> 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
> }
> }
> }
I want get property type, like this:
auto testType1 = A.a;
auto testType2 = B.a;
if (testType1 is testType2)
{
writeln("yes");
}
More information about the Digitalmars-d
mailing list