根据cppreference.com,std::ios_base::failure
有两个继承层次结构:
问题
为什么和有什么区别?
背景
使用g ++ 4.7.1我遇到了这个错误,到目前为止我知道这是因为第一个继承层次结构:
错误:'const class std :: ios_base :: failure'没有名为'code'的成员
更新
使用gcc,即使在C ++ 11模式下,ios_base::failure
仍然继承自exception
。引自here:
ios_base :: failure不是从system_error派生的。
答案 0 :(得分:5)
那是因为std::system_error是在C ++ 11中引入的。 std::ios_base::failure
直接来自std::exception
。
由于code()方法是std::system_error
的成员,std::ios_base::failure
不会在不支持C ++ 11的环境中公开它。