c++: dynamic_cast vs reinterpret_cast

Theodore Lytras thlytras at gmail.com
Mon Sep 10 15:34:51 EEST 2012


Στις Δευ 10 Σεπτ 2012, ο/η John Tsiombikas έγραψε:
[snip, snip]
> To reinterpret_cast den
> exei logo yparksis, just (cast) ...
[snip, snip]
> > Αυτό που θέλω είναι να μετατρέψω δείκτες Α* σε δείκτες Β*. Φαντάζομαι
> > αυτό μπορεί να γίνει τόσο με dynamic_cast όσο και με reinterpret_cast.
> > Με ποιό από τα δύο λοιπόν θα πρέπει να το κάνω, και γιατί?
> 
> B *bptr = (B*)aptr;
> 
> Seriously... ksexna ta whatever_casts<kourasi>(foo)... den yparxei logos
> na kaneis ton kodika sou toso asximo.

OK, άρα εσύ μου λες να χρησιμοποιήσω C-style casts, τα οποία σε διάφορα C++ 
tutorials τα αποδοκιμάζουν. Αν είναι πάντως θέμα στυλ, εμένα μ'αρέσουν τα C++ 
casts, είναι λιγότερο ambiguous και πιο ξεκάθαρα στο μάτι νομίζω. Διάβασα 
πάντως οτι το reinterpret_cast (και νομίζω αυτό μου λες και συ πιο πάνω) οτι 
είναι ίδιο με το C-style cast, άρα μεταξύ dynamic_ και reinterpret_ μου 
απαντάς στην ουσία οτι στο σενάριο που προανέφερα μπορώ άνετα να χρησιμοποιήσω 
το reinterpret_. Thanks!!

> Den einai toso aparaitito na teriazei 1-1 i eikona ton antikeimenon sou
> sto myalo sou me ton kodika. Einai protimotero na aplopoiiseis ton
> kodika synithos.

Δίκιο έχεις, αλλά στην προκειμένη περίπτωση η πολλαπλή κληρονομικότητα με 
σώνει από αρκετό επαναλαμβανόμενο κώδικα. Σκέφτηκα την περίπτωση του 
composition, αλλά έκρινα οτι δε με βολεύει. Άρα η πολλαπλή φαίνεται σαν η 
απλούστερη των λύσεων.


-- 
"Beauty is transitory."
"Beauty survives."
        --  Mr. Spock & Capt. Kirk, "That Which Survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>


More information about the Linux-greek-users mailing list