Transtypage cours Christian Casteyde
	
	
		Salut,
Je suis en train de me faire le cours de Christian Casteyde pour vraiment apprendre le C++.
Je suis au niveau du transtypage Seulement je ne comprend pas bien son exemple:
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 
 | struct A
{
    virtual void f(void)
    {
        return ;
    }
};
 
struct B : virtual public A
{
};
 
struct C : virtual public A, public B
{
};
 
struct D
{
    virtual void g(void)
    {
        return ;
    }
};
 
struct E : public B, public C, public D
{
};
 
int main(void)
{
    E e;        // e contient deux sous-objets de classe B
                // (mais un seul sous-objet de classe A).
                // Les sous-objets de classe C et D sont
                // frères.
    A *pA=&e;   // Dérivation légale : le sous-objet
                // de classe A est unique.
    // C *pC=(C *) pA;// Illégal : A est une classe de base
                      // virtuelle (erreur de compilation).
    C *pC=dynamic_cast<C *>(pA);  // Légal. Transtypage
                                  // dynamique vertical.
    D *pD=dynamic_cast<D *>(pC);  // Légal. Transtypage
                                  // dynamique horizontal.
    B *pB=dynamic_cast<B *>(pA);  // Légal, mais échouera
                                  // à l'exécution (ambiguïté).
    return 0 ;
} | 
 Deja il met en commentaire que C et D sont freres, je vois pas comment... ensuite je ne comprend pas pourquoi la derniere ligne doit échouer?
Est ce que quelqu'un peut m'expliquer?
Merci d'avance