为什么std :: ios_base :: failure有两个继承图,有什么区别?

时间:2012-07-30 05:27:05

标签: c++ exception

根据cppreference.comstd::ios_base::failure有两个继承层次结构:

enter image description here

问题

为什么和有什么区别?

背景

使用g ++ 4.7.1我遇到了这个错误,到目前为止我知道这是因为第一个继承层次结构:

  

错误:'const class std :: ios_base :: failure'没有名为'code'的成员

更新

使用gcc,即使在C ++ 11模式下,ios_base::failure仍然继承自exception。引自here

  

ios_base :: failure不是从system_error派生的。

1 个答案:

答案 0 :(得分:5)

那是因为std::system_error是在C ++ 11中引入的。 std::ios_base::failure直接来自std::exception

由于code()方法是std::system_error的成员,std::ios_base::failure不会在不支持C ++ 11的环境中公开它。