4

C++ アプリケーションで次のエラーが発生します。

error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' :
              cannot access private member declared in class '

stackoverflow で同様の質問を見たことがありますが、コードの何が問題なのかわかりませんでした。誰かが私を助けることができますか?

    //header file
class batchformat {
    public:
        batchformat();
        ~batchformat();
        std::vector<long> cases;        
        void readBatchformat();
    private:
        string readLinee(ifstream batchFile);
        void clear();
};


    //cpp file
void batchformat::readBatchformat() 
{
    ifstream batchFile; 
    //CODE HERE
    line = batchformat::readLinee(batchFile);

}


string batchformat::readLinee(ifstream batchFile)
{
    string thisLine;
    //CODE HERE
    return thisLine;
}
4

3 に答える 3

13

問題は:

string readLinee(ifstream batchFile);

これは、ストリームのコピーを値で渡そうとします。ただし、ストリームはコピーできません。代わりに参照渡ししたい:

string readLinee(ifstream & batchFile);
//                        ^
于 2013-07-15T13:21:20.710 に答える
2
string batchformat::readLinee(ifstream batchFile)

ifstream をコピーしようとしています 代わりに ref で取得してください

string batchformat::readLinee(ifstream& batchFile)
于 2013-07-15T13:21:37.013 に答える
1

あなたのエラーは、値でifstreamを渡すことができないということです:

string readLinee(ifstream batchFile);

代わりに ref で渡します:

string readLinee(ifstream& batchFile);

そして、メソッド内のラインを変更することをお勧めしますreadBatchformat:

void batchformat::readBatchformat() 
{
    ifstream batchFile; 
    //CODE HERE
    line = this->readLinee(batchFile);
    //      ^^^^^^
}

より読みやすいと思います。

于 2013-07-15T13:21:29.423 に答える