July 09, 2016
class C
{
    this(){ _i = 0; _j = 0; }
    void setVar(int i) { _i = i; }
    int getVar() { return _i; }
    int _i;
    int _j;
}

writeln("C");
foreach( i, str; myClassMembers)
{
    writeln("    member ", i, " = ", str);
    TypeInfo ti = typeid(str);
    writeln("    type id is ", ti);
    writeln("    type is ", typeof(str).stringof);
}


C
    member 0 = __ctor
    type id is immutable(char)[]
    type is string
    member 1 = _i
    type id is immutable(char)[]
    type is string
    member 2 = setVar
    type id is immutable(char)[]
    type is string
    member 3 = getVar
    type id is immutable(char)[]
    type is string
     . . .
    the same all the way through the class

I'm trying to get at least the type int for the _i member?  Also, is there a way to get __traits(allMembers  to work recursively?  Say, with struct containing structs.

Thanks,
kyle




July 09, 2016
On Saturday, 9 July 2016 at 21:12:24 UTC, WhatMeWorry wrote:
> foreach( i, str; myClassMembers)

What are you doing to get myClassMembers?

If it is __traits(allMembers), it just gives you the *names* of the members. To get the actual thing, you then do __traits(getMember, object, str) and can check the type of that.

> Also, is there a way to get __traits(allMembers  to work recursively?  Say, with struct containing structs.

You can always just call it recursively once you get the member :)