これが私の問題です。X個のファイルを作成し、さまざまな事実に応じてそれらに書き込む必要があります。私の解決策は、このようなオブストリームポインターのベクトルを作成することでした
#include <boost/algorithm/string.hpp>
#include <vector>
#include<string>
#include <iostream>
#include <fstream>
vector<ofstream*> files;
files.resize(SplitVec.size()-4);
for(i=0;i<SplitVec.size()-4;i++)
{
line="/Users/jorge/Desktop/testing/strain_"+lexical_cast<string>(i);
cout<<"ine"<<endl;
files[i]=new ofstream(line.c_str());
}
この部分までは素晴らしいファイルを作成し、プログラムの後半でそれらに書き込みますが、これも素晴らしいことです。私の問題は、次を使用する場合、オブジェクトを閉じたいときです。
for(i=0;i<SplitVec.size()-4;i++)
{
*files[i].close();
}
次のエラーが表示されます。
In file included from main.cpp:14:./methyl.h:298: error: request for member 'close' in 'files. std::vector<_Tp, _Alloc>::operator[] [with _Tp = std::ofstream*, _Alloc = std::allocator<std::ofstream*>](1ul)', which is of non-class type 'std::ofstream*'
それで、私は質問があります.1つ目は、なぜcloseを呼び出すことができないのかということです.これはストリームへのポインタです.プログラムは正常に動作しますが、これは悪い習慣であり、怠け者またはくだらないプログラマーになりたくないことはほぼ確実です。私はできる限り調べましたが、答えを見つけることができませんでした. ありがとうございました!!!