[英]Error C2248:cannot access private member declared in class
我創建了這個課:
#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 <_Elem,_Traits> :: basic_ofstream':無法訪問在類'std :: basic_ofstream <_Elem,_Traits>中聲明的私有成員
那么有人可以幫我嗎?
您描述的錯誤可能並非來自您提供的代碼; 您的課程聲明就可以了。 它必須來自代碼的另一部分,您嘗試在其中復制XLSCreator
類,例如,通過調用copy-assignment:
XLSCreator foo("filename");
XLSCreator bar = foo; //copies foo to create bar
當C ++嘗試為您的類生成默認的復制分配運算符時 ,會發生該錯誤,該操作僅調用您聲明的每個成員的復制賦值運算符。 正如@chris在評論中所說, std::ofstream
是不可復制的,因此,當編譯器嘗試調用filecontents
的副本分配運算符時,它會發現它是不允許的( operator=
在basic_ofstream
是private)。
為了解決此問題,您要么需要確保從不復制XLSCreator
,要么為XLSCreator
明確定義一個復制分配運算符,該運算符XLSCreator
某種方式處理filecontents
成員而不嘗試對其進行復制。
您不需要導入流嗎? 我認為您不能僅使用iostream和fstream來創建ofstreams。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.