J'ai la classe suivante qui a un constructeur qui lit dans un fichier txt qui contient la taille de object
que le constructeur doit créer. Ensuite, j'ai besoin de la fonction read()
pour reprendre l'arrêt du constructeur, mais pour une raison quelconque, il recommence en haut du fichier. Comment est-ce réglé?Utilisation de variables du constructeur dans la fonction membre
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;
Mon fichier principal ressemble à ceci:
int main(){
Reader r("file.dat");
while(r.read()) {
//Function that prints out the values of read()
}
}
'_file' est à état. Vous devriez continuer là où le constructeur s'est arrêté pour lire automatiquement. Cela ne fonctionne-t-il pas pour vous? –
comment appelez-vous 'read()'? et qu'est-ce que cela a à voir avec votre constructeur? – xander
J'ai un petit fichier principal qui crée d'abord un objet de classe 'Reader' et ensuite j'appelle la fonction' read() '. Voir éditer. –