C++ 在C++;?
我有一个从C++ 在C++;?,c++,C++,我有一个从std::exception派生的类a,还有一个从a派生的类B。我已经为A和B两个类重写了what()函数。我知道如果我有这样的拦网 catch(A& ob){ std::cout << ob.what(); } catch(A&ob){ std::cout发生这种情况的唯一方法是B::what()不重写基类中的函数,如果它的签名与基类中的函数不匹配,就会发生这种情况 请确保您没有忘记在B中设置const,以匹配基类中的const char*what()co
std::exception
派生的类a
,还有一个从a
派生的类B
。我已经为A
和B
两个类重写了what()
函数。我知道如果我有这样的拦网
catch(A& ob){
std::cout << ob.what();
}
catch(A&ob){
std::cout发生这种情况的唯一方法是B::what()
不重写基类中的函数,如果它的签名与基类中的函数不匹配,就会发生这种情况
请确保您没有忘记在B
中设置const
,以匹配基类中的const char*what()const
。请发布一条。他可能只是忘记了virtual
。我测试了它,效果很好。@Puppy,当它在std::exception::what()
上时很难忘记它