On Saturday, 16 December 2017 at 03:48:01 UTC, Jonathan M Davis wrote:
On Saturday, December 16, 2017 03:34:43 Marc via Digitalmars-d-learn wrote:
I need to give a class C, read all user-defined members of it,

both name and value dynamically. for example:
> [...]

then

>[...]

I get this error:
> [...]

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

You're trying to read a runtime value at compile time, and that's not going to work. c doesn't exist until runtime, so none of its members exist until runtime. You can introspect on the type C, but the variable c is a runtime entity.

- Jonathan M Davis

You're right. I changed to generate code to do it properly at runtime, something like this:

enum string[] members = [__traits(derivedMembers, Field)] [0 .. $ - 1];
                static foreach(enum string member; members) {
                        doSomething(member, __traits(getMember, fields, 
member));
                }

Not sure if best approach. note: I know [0 .. $ -1] is probably wrong. I'll fix it

Reply via email to