erreur: impossible de dynamic_cast ... (la cible n'est pas de pointeur ou de référence)

Je suis en train d'apprendre la gestion des exceptions en C++ et a couru dans un problème. Voici le code:

#include<iostream>
#include<exception>

using namespace std;

class A
{
public:
    virtual void f(void){}
};

class AA:public A
{
public:
    void aa(void){};

};

int main(void)
{

    A a;
    try
    {
        dynamic_cast<AA>(a).aa();
    }
    catch(exception ex)
    {
        cout<<"["<<ex.what()<<"]"<<endl;
    }
    return 0;
}

J'ai donc pensé que le try catch permettra à la fonction à exécuter et à me montrer le contenu de l'exception, mais mon compilateur ne pas compiler. J'utilise codeblock avec GNU GCC. S'il vous plaît aidez-moi et montrez-moi ce que je dois faire pour obtenir le code à exécuter comme je l'ai prévu. merci beaucoup.

Vous obtenez une erreur du compilateur. Il est important pour vous de partager cette erreur dans votre question, de sorte que vous pouvez apprendre à lire et à comprendre.
bien sûr. "ne peut pas dynamic_cast" a "(de type "classe A") de type "classe AA'(la cible n'est pas de pointeur ou de référence)
Qui est le principal problème ici. dynamic_cast travaux sur l'indicateur ou des types de référence. AA n'est pas un pointeur ou d'une référence de type.
Puisque vous êtes en train d'apprendre la gestion des exceptions: c'est le meilleur moyen d'attraper une exception est par const référence - c'est-à catch(const std::exception& ex)

OriginalL'auteur focusHard | 2013-06-16