#include <fstream>
#include <iostream>
using namespace std;
class file_reader {
public:
file_reader(const char* file_name) : file(ifstream(file_name)) { }
char operator[](int index) const {
file.seekg(index);
return file.get();
}
private:
ifstream file;
};
我收到错误:'std::ios_base::ios_base(const std::ios_base&)' is private
。好像代码试图在层次结构中调用更高的构造函数。虽然ifstream
的构造函数需要const char*
。有什么问题?
答案 0 :(得分:7)
通过创建临时ifstream(file_name)
然后从中初始化file
,您尝试调用文件的复制构造函数,这会失败,因为该构造函数在声明它的位置是私有的(在基础{{ 1}});溪流无法复制。
我确定你打算写这个:
ios_base
记住,这个:
file_reader(const char* file_name) : file(file_name) { }
在初始化struct T
{
S object;
type() : object(arg) {};
};
方面非常像:
S