Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367

    [C++] Dynamic cast: perchè solo con classi polimorfiche?

    Se ho queste classi senza funzioni virtuali:
    codice:
    class A {
    public: 
    int a;
    };
    
    class B : public A {
    public:
    int b;
    };
    
    class C : public A {...};
    Qual'è il motivo logico perchè non possa fare:
    codice:
    A *funzione(...) {...}
    
    (in un'altra funzione:)
    A *puntatore = funzione(...);
    B *puntB = dynamic_cast<B*>(puntatore);
    if(puntB) { cout << puntB->b;)
    in che modo posso risolvere un problema simile?
    I've got a bike. You can ride it if you like.

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Non funziona perchè non c'è polimorfismo. Prova a rendere A astratta.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    So che non funziona perchè non c'è poliformismo, ma vorrei capire perchè deve esserci il poliformismo... vorrei capire il motovo logico per cui Stroustru (o chi altro) ha fatto questa decisione...

    è un motivo di logica oppure di struttura (nel senso che magari solo le funzioni poliformiche si prestano a questi cast run-time...) ??
    I've got a bike. You can ride it if you like.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.