It may be that the type of similarObject
has overloaded operator*
and so it returns something whose address you're passing to dynamic_cast
.
&(*x)
and x
may not be always the same thing. For example, think of iterator:
std::map<int, int>::iterator it = v.begin();
Then it
and &(*it)
are two different thing:
- The type of
it
is std::map<int, int>::iterator
- The type of
&(*it)
is std::pair<int,int>*
They're not at all same. Similar thing may happen with your code-snippet as well.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…