Just noticed an odd thing when I was trying Jacob's code.

This works great:
    auto x = new someClass();
    Object o = x;
    void delegate() dg;
    foreach(i, m; __traits(derivedMembers, someClass))
      {
        writeln("i=", i, "  m=", m);

        if(m != "__ctor")
          {
            dg.funcptr = cast(void function()) o.classinfo.vtbl[i + 6];
            dg.ptr = cast(void*) o;
            dg();
          }
      }

but this doesn't (it segfaults):
    Object o = Object.factory("someClass");
    void delegate() dg;
    foreach(i, m; __traits(derivedMembers, someClass))
      {
        writeln("i=", i, "  m=", m);

        if(m != "__ctor")
          {
            dg.funcptr = cast(void function()) o.classinfo.vtbl[i + 6];
            dg.ptr = cast(void*) o;
            dg();
          }
      }


Is the object returned by Object.factory() not the same somehow as the one
returned by new()?

John

Reply via email to