<div>Maybe I'm doing something else incorrectly:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><font class="Apple-style-span" face="'courier new', monospace">class Base</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> {</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> public void inBase()</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> {</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> }</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> }</font></div><div><font class="Apple-style-span" face="'courier new', monospace"><br>
</font></div><div><font class="Apple-style-span" face="'courier new', monospace">class Bob : Base</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> {</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> public void inBob()</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> {</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> }</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> } </font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> </font></div></blockquote><div><div> <font class="Apple-style-span" face="'courier new', monospace"> Bob bob = new Bob();</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> writeln("Bob as Bob");</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> foreach (i, m; __traits(allMembers, typeof(bob)))</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> {</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> writeln("=== i=", i, " m=", m);</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> }</font></div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> Base base = bob;</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> writeln("Bob as Base");</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> foreach (i, m; __traits(allMembers, typeof(base)))</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> {</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> writeln("=== i=", i, " m=", m);</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> }</font></div></div><div><br></div><div>The output is:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div><div><font class="Apple-style-span" face="'courier new', monospace">Bob as Bob</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=0 m=inBob </font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=1 m=inBase</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=2 m=toString</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=3 m=toHash</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=4 m=opCmp</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=5 m=opEquals</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=6 m=Monitor</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=7 m=factory</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">Bob as Base</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=0 m=inBase ; missing inBob()</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=1 m=toString</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=2 m=toHash</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=3 m=opCmp</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=4 m=opEquals</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=5 m=Monitor</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=6 m=factory</font></div></div></blockquote><div><br></div><div><br></div><div>If typeof(base) returned Bob as the type, then the two lists of members should be identical. Or am I missing something else?</div>
<div><br></div><div>If I use derivedMembers instead of allMembers, the output is:</div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div><font class="Apple-style-span" face="'courier new', monospace">Bob as Bob</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=0 m=inBob</font></div></div><div><div><font class="Apple-style-span" face="'courier new', monospace">Bob as Base</font></div>
</div><div><div><font class="Apple-style-span" face="'courier new', monospace">=== i=0 m=inBase</font></div></div></blockquote><div><br></div><div>which still seems to support that typeof() doesn't return the underlying type.</div>
<div><br></div><div>John</div><div><br></div><br><div class="gmail_quote">On Thu, Oct 20, 2011 at 12:25 AM, Jens Mueller <span dir="ltr"><<a href="mailto:jens.k.mueller@gmx.de">jens.k.mueller@gmx.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><div></div><div class="h5">J Arrizza wrote:<br>
> typeof returns the type of the object given to it:<br>
><br>
> SomeClass sc;<br>
> typeof(sc) // returns SomeClass<br>
><br>
> Object o = sc;<br>
> typeof(o) // returns Object<br>
><br>
> Is there a way or call to get the underlying type?:<br>
><br>
> typeof2(o) //returns SomeClass<br>
><br>
> I checked the online doc, but nothing in the Declarations section that I<br>
> could see.<br>
<br>
</div></div>typeid should work.<br>
<a href="http://d-programming-language.org/expression.html#TypeidExpression" target="_blank">http://d-programming-language.org/expression.html#TypeidExpression</a><br>
<font color="#888888"><br>
Jens<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>John<br>blog: <a href="http://arrizza.blogspot.com/">http://arrizza.blogspot.com/</a><br>web: <a href="http://www.arrizza.com/">http://www.arrizza.com/</a><br>