<div>Just noticed an odd thing when I was trying Jacob's code.</div><div><br></div><div>This works great:</div><div>    auto x = new someClass();</div><div>    Object o = x;</div><div><div>    void delegate() dg;</div>
<div>    foreach(i, m; __traits(derivedMembers, someClass))</div><div>      {</div><div>        writeln("i=", i, "  m=", m);</div><div><br></div><div>        if(m != "__ctor")</div><div>          {</div>
<div>            dg.funcptr = cast(void function()) o.classinfo.vtbl[i + 6];</div><div>            dg.ptr = cast(void*) o;</div><div>            dg();</div><div>          }</div><div>      }</div></div><div><br></div><div>
but this doesn't (it segfaults):</div><div><div>    Object o = Object.factory("someClass");</div></div><div><div><div>    void delegate() dg;</div><div>    foreach(i, m; __traits(derivedMembers, someClass))</div>
<div>      {</div><div>        writeln("i=", i, "  m=", m);</div><div><br></div><div>        if(m != "__ctor")</div><div>          {</div><div>            dg.funcptr = cast(void function()) o.classinfo.vtbl[i + 6];</div>
<div>            dg.ptr = cast(void*) o;</div><div>            dg();</div><div>          }</div><div>      }</div></div></div><div><br></div><div><br></div><div>Is the object returned by Object.factory() not the same somehow as the one returned by new()?</div>
<div><br></div><div>John</div><div><br></div>