2013-12-22 167 views
0

我必須聲明爲private成員創建了這個類:錯誤C2248:無法訪問

#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>'

所以任何人可以幫助我嗎?

+2

你不能複製它。 – chris

+0

複製什麼?代碼有什麼問題? – user2073081

+0

'std :: ofstream'是不可複製的。據推測,你試圖複製你的類,默認的複製構造函數只是成員 - 複製文件流。 – chris

回答

-2

你不需要輸入ofstream嗎?我不認爲你可以創建只有iostream和fstream的流。

+0

-1 ofstream包含在 Basilevs

+0

@Basilevs您的評論可以理解爲「Thestream header is ...」和「Thestream type is ...」,因此要添加:沒有ofstream header。流類型在''中定義。 – hvd

+0

@ hvd,我沒有明白你的觀點,但的確,在一個標題中定義了直接或間接在本身。我剛剛縮短了聲明。 – Basilevs

0

您描述的錯誤不能來自您提供的代碼;你的類聲明沒問題。它必須來自您的代碼的不同部分,其中您試圖複製XLSCreator課程,例如,通過調用拷貝賦值:當C++試圖爲您的類,它只是調用你聲明的每個成員的拷貝賦值操作符default copy-assignment operator

XLSCreator foo("filename"); 
XLSCreator bar = foo; //copies foo to create bar 

的錯誤出現。 std::ofstream不可複製,因爲@chris在註釋中說,所以當編譯器試圖調用filecontents的複製賦值運算符時,它發現它不允許(operator=basic_ofstream內是私有的)。

爲了解決這個問題,您可能需要確保你永遠不會複製XLSCreator,或者明確地定義一個拷貝賦值運算符爲XLSCreator,不知怎的,處理filecontents成員沒有試圖複製它。

相關問題