代码之家  ›  专栏  ›  技术社区  ›  WantToKnowMath

命名空间“std”中的“bad\u cast”未命名类型错误[已关闭]

  •  0
  • WantToKnowMath  · 技术社区  · 7 年前

    给出下一个代码:

    #include <iostream>
    using std::cout;
    using std::endl;
    using std::cerr;
    
    class A {
    public:
        virtual ~A() {
        }
    };
    
    class B: public A {
    public:
    
    };
    
    int main() {
        int n = 4;
        A a;
        A& base = a;
        B* ptr = dynamic_cast<B*>(&base);
        if (ptr == NULL) {
            cerr << "base is not a B";
        }
        try {
            B& derived = dynamic_cast<B&>(base);
            derived = *ptr;
        } catch (std::bad_cast&) { // ERROR
            cerr << "base is not a B";
        }
        if (n == 3) {
        }
        return 0;
    }
    

    我收到此消息错误,我不明白原因是什么,如何修复它?

    命名空间“std”中的“bad\u cast”未命名类型

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alan Birtles    7 年前

    如果您在以下位置查找文档: http://en.cppreference.com/w/cpp/types/bad_cast 它在顶部告诉您每个类/函数需要哪些include。在这种情况下,您需要包括 <typeinfo>