コンストラクタが行うべきサイズがobject
のtxtファイルを読み込むコンストラクタを持つ次のクラスがあります。次に、コンストラクタがどこで停止したのかを調べるために関数read()
が必要ですが、何らかの理由でファイルの先頭から再び開始します。これはどのように修正されましたか?メンバー関数内のコンストラクタから変数を使用する
class Reader {
public:
Reader(const char* file): _file(file) {
_ptr = 0;
ifstream _file(file);
_file >> word;
if(word!="BEGIN") {
//Raise error.
}
_file >> word; //Reads in next word.
if(word=="SIZE") {
_file >> size_x;
_file >> size_y;
_ptr = new Object(size_x,size_y);
}
else {
//Raise error.
}
_file >> word;
while(word=="POSITION") {
int readoutID;
int ix;
int iy;
_file >> readoutID >> ix >> iy;
//Set ID to position
_file >> word;
}
std::cout << "End of definition: " << word << std::endl;
}
bool read(){
std::cout << word << std::endl; // This word should be the one where the constructor stopped.
//Returns False at the end if file.
}
private:
Object* _ptr;
std::ifstream _file;
std::string word;
私の主なファイルは次のようになります。
int main(){
Reader r("file.dat");
while(r.read()) {
//Function that prints out the values of read()
}
}
'_file'はステートフルです。自動的に読み込むためにコンストラクタが停止した場所を続ける必要があります。それはあなたのために働かないのですか? –
どのように 'read()'を呼びますか?そしてあなたのコンストラクタと何が関係しているのですか? – xander
私は最初にクラス 'Reader'のオブジェクトを作成した後、' read() '関数を呼び出す小さなメインファイルを持っています。編集を参照してください。 –