how do I read a class member's value using traits?

Marc jckj33 at gmail.com
Sat Dec 16 03:34:43 UTC 2017


I need to give a class C, read all user-defined members of it, 
both name and value dynamically. for example:

> class C {
>   string a;
>   string b;
>   string c;
> }

then

> Class c = new C();
> // set c members...
> enum string[] members = [__traits(allMembers, C)];
> foreach(string member; members) {
>	string value = __traits(getMember, c, member);
>	doSomething(member, value);
>}

I get this error:

> Error: variable member cannot be read at compile time
> Error: string expected as second argument of __traits 
> `getMember` instead of `__error`

why can't member in foreach(string member; members) be read at 
compile time? I've also tried

> foreach(enum string member; members)
and
> static foreach(string member; members)

but it result a lot of error messages.





More information about the Digitalmars-d-learn mailing list