On Wednesday, 28 March 2018 at 10:10:19 UTC, Simen Kjærås wrote:
So to get the class name you'd generally use
typeof(this).stringof.
...
And could somebody explain to me why 'typeid(this).stringof'
is returning 'typeid(this)'?
Because that's what you're asking for. :p
typeid returns the run-time (also called dynamic) type of a
class instance. stringof is a compile-time construct that
resolves to a compile-time constant string representation of
its argument. If that argument is a type, it gives the name of
the type. If it's an expression (such as 1+2, foo(), or
typeid(this)), it gives a string representation of the
expression. For typeid(this), that's "typeid(this)".
If you want to know the dynamic type of a class reference at
run-time, such as in fuu(), you'd need to write
writeln(typeid(this)).
--
Simen
On Wednesday, 28 March 2018 at 10:12:34 UTC, bauss wrote:
On Wednesday, 28 March 2018 at 09:44:35 UTC, number wrote:
And could somebody explain to me why 'typeid(this).stringof'
is returning 'typeid(this)'?
stringof will return a string equivalent to the expression or
symbol's representation, not its definition.
Meaning:
(212 + 221).stringof == "212 + 221"
(new Foo).stringof == "new Foo"
etc.
Thank you for the explanations. I somehow forgot about typeof
though i must have seen it a lot in 'Ali Cehreli's Book.