Re: dynamic cast questions
On Sep 27, 5:42 pm, puzzlecracker <ironsel2...@gmail.com> wrote:
What about dynamic_cast when dynamic reference is not unique
(e.g. A-> B, B->C, B->D, is dynamic_cast<B *> correct for
pointer to D?
Obviously. So is static_cast, and any time static_cast is OK,
so is dynamic_cast.
But I don't understand the comments above. B is unique.
Perhaps you meant something like:
B B
| |
L R
\ /
D
D* pD = new D ;
B* pB = dynamic_cast< B* >( pD ) ;
Most people would probably try static_cast in such cases, but
the results are the same, static_cast or dynamic_cast: the
conversion is ambiguous, and thus rejected by the compiler.
Perhaps a more complete example of what you're asking would be
in order. Or just read the exact rules (=A75.2.7/8 in the
standard).
Why would you use dynamic cast<void *>?
Because you want the void* to point to the complete object, and
not just to the sub-object pointed to by the pointer you have.
What is typeid
An operator.
& what does it return?
Since it's not a function, it doesn't return anything. The
result of the operator is an lvalue of type std::type_info
const, or of some implementation defined type derived from
std::type_info (also const).
How would you use it?
Depends on what you want to use it for.
What is wrong here
void *pVoid = new C(); C *pC = dynamic_cast<C *> (pVoid);
It's not legal C++. You can't dynamic_cast a void*.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34