Jeffry Nox wrote:
struct A {
        uint id=0;
        char[] name;
}

struct B {
        uint id=0;
        char[] title;
}

void lookup(T)(T[] s, ***)
{
  char[] txt = s[0].***;
}

as illustrated above, how can i get struct object property info as in *** so i 
can manipulate it inside the function lookup above? in function lookup, i didnt 
know what is the variable name for the char[], so *** pass in the 2nd 
parameter, question is how to pass that member info or pointer so that it works 
on different struct declarations?


Use tupleof. You need to specify a compile-time constant value as the index to tupleof, but looping also works:


import tango.io.Stdout;

struct S
{
    int i;
    char[] b;
}

void getItem (S s, int index)
{
    foreach (i, n; s.tupleof)
    {
        Stdout.formatln("{} {}", i, typeid(typeof(s.tupleof[i])));
        if (i == index)
        {
            auto value = s.tupleof[i];
            Stdout.formatln("Value is `{}`", value);
        }
    }
}

void main (char[][] args)
{
    S s;
    getItem(s, 0);
    getItem(s, 1);
}

Reply via email to