2009-05-05 6 views
0

j'ai un programme appelé principal:"identifiant seekg not found"

#include<iostream> 
#include<fstream> 
using namespace std; 
#include"other.h" 
int main() 
{ 
//do stuff 
} 

puis other.h:

char* load_data(int begin_point,int num_characters) 
{ 
    seekg(begin_point); 
    char* return_val=new char[num_characters+1]; 
    mapdata.getline(return_val,num_characters); 
    return return_val; 
} 

et je reçois l'erreur:

'seekg': identifier not found

pourquoi est-ce que j'obtiens cette erreur et comment la réparer? Seekg est une méthode de la classe fstream (déclarée dans istream)

+0

définissent les fonctions que vous dans un fichier d'en-tête ?? o.O Le format correct serait de fournir le prototype de fonction dans le fichier d'en-tête, puis de créer un fichier séparé (peut-être autre.cpp) qui définit réellement la fonctionnalité de load_data. – ParoXoN

Répondre

1

Vous n'en avez instancié aucun.

Prenez cela comme un exemple

ifstream is; 
    is.open ("test.txt", ios::binary); 

    // get length of file: 
    is.seekg (0, ios::end); 

source: http://www.cplusplus.com/reference/iostream/istream/seekg/

Donc, vous devriez

char* load_data(int begin_point,int num_characters) 
{ 
    ifstream is; 
    is("yourfile.txt") //file is now open for reading. 

    seekg(begin_point); 
    char* return_val=new char[num_characters+1]; 
    mapdata.getline(return_val,num_characters); 
    return return_val; 
} 

Prendre en compte ce que ParoXon a commenté dans votre question.

Vous devez créer un fichier other.cpp contenant l'implémentation load_data de la fonction. Le fichier other.h doit contenir la déclaration load_data de la fonction. Dans ce fichier (other.h), vous devez inclure tous les fichiers nécessaires pour que les fonctions déclarées fonctionnent. Et n'oubliez pas de vous protéger contre plusieurs inclusions!

Fichier other.h

#ifndef __OTHER_H__ 
#define __OTHER_H__ 

#include <iostream> 
#include <fstream> 

char* load_data(int,int);//no implementation 
#endif 

Fichier other.cpp

#include "other.h" //assumes other.h and other.cpp in same directory 

char* load_data(int begin,int amount){ 
     //load_data implementation 
} 
Questions connexes