3

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

在此处输入图像描述

问题

为什么和有什么区别?

背景

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

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

更新

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

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

4

1 回答 1

5

这是因为std::system_error是在 C++11 中引入的。std::ios_base::failure直接从std::exception之前衍生而来。

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

于 2012-07-30T05:33:00.170 回答