簡體   English   中英

錯誤C2248:無法訪問在類中聲明的私有成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM