我有一个类似于下面的函数,它是const,需要在继续之前检查文件流是否打开:
bool MyClass::checkSomeStuff() const
{
// Where outputFile_ is a std::ofstream
if ( ! outputFile_.is_open() )
{
throw std::runtime_error( "Output file not open." );
}
// ... do more stuff
Run Code Online (Sandbox Code Playgroud)
但是,似乎我不能这样做,因为is_open()
声明为:
bool is_open ( );
Run Code Online (Sandbox Code Playgroud)
(即非常数)
对我来说,像这样的函数 - 显然是一个纯粹的访问器 - 似乎有点奇怪 - 应该是非常量的.背后的逻辑是否合理?
Leo*_*ard 13
这是标准库中的已知差异.您可以在此处找到有关它的更多信息:http: //www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#365