我正在编写一个用于处理文本文件的类。我想“复制”ifstream-object属性。下面的代码显示了我是如何做到的。函数 w.m_fin.tellg()时出现问题:
我想在源中设置目标对象中的文件位置。 如果我使参数non-const [Word(Word& w)]一切正常。但我不想让它成为非常数。我该怎么做才能解决这个问题?
谢谢
class Word
{
private:
std::ifstream m_fin;
std::string m_in_filename;
public:
Word(const Word& w): m_in_filename( w.m_in_filename )
{
m_fin(m_in_filename);
m_fin.copyfmt( w.m_fin );
m_fin.clear( w.m_fin.rdstate() );
m_fin.seekg( w.m_fin.tellg() );//here I get an error
}
}
答案 0 :(得分:3)
由于b tellg
(通过可能设置fail
状态)会更改流的状态(当然,搜索和任何形式的读取或写入操作都是如此),您不能这样做一个const
个对象。但是,我希望您可以,如果您想以这种方式解决它,将m_fin
声明为mutable
,这意味着编译器甚至可以为const
对象更改它。