我创建了这个类:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class XLSCreator
{
private:
ofstream filecontents;
int fileType;
int cellNumber;
int rowsNumber;
public:
XLSCreator(string);
~XLSCreator();
void createType1File(string, string, string);
void createType2File(string, string, string, string, string);
void addNewRow();
void addData(string);
void saveFile();
};
但是当我尝试构建它时,它给了我这个错误:
错误2错误C2248:'std :: basic_ofstream&lt; _Elem,_Traits&gt; :: basic_ofstream':无法访问类'std :: basic_ofstream&lt; _Elem,_Traits&gt;'
中声明的私有成员有人可以帮我这个吗?
答案 0 :(得分:0)
您描述的错误不可能来自您提供的代码;你的班级声明没问题。它必须来自您的代码的不同部分,您尝试复制XLSCreator
类,例如通过调用副本分配:
XLSCreator foo("filename");
XLSCreator bar = foo; //copies foo to create bar
当C ++尝试为您的类生成default copy-assignment operator时,会出现错误,该类只调用您已声明的每个成员的复制赋值运算符。 std::ofstream
是不可复制的,正如@chris在评论中所说,所以当编译器试图调用filecontents
的复制赋值运算符时,它会发现它不被允许({{ 1}}在operator=
)内是私有的。
为了解决这个问题,您需要确保永远不要复制basic_ofstream
,或明确定义XLSCreator
的复制赋值运算符,以某种方式处理XLSCreator
成员而不尝试复制它。
答案 1 :(得分:-2)
你不需要导入ofstream吗?我不认为你可以用iostream和fstream来创建流。