“No se encontró el identificador de búsqueda”
-
05-07-2019 - |
Pregunta
Tengo un programa llamado main:
#include<iostream>
#include<fstream>
using namespace std;
#include"other.h"
int main()
{
//do stuff
}
y luego otro.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;
}
y obtengo el error:
'seekg': identificador no encontrado
¿por qué recibo este error y cómo lo soluciono?
Solución
seekg es un método de la clase fstream (declarada en istream).
No has creado ninguna instancia.
Toma esto como un ejemplo
ifstream is;
is.open ("test.txt", ios::binary );
// get length of file:
is.seekg (0, ios::end);
fuente: http://www.cplusplus.com/reference/iostream/ istream / seekg /
Entonces, deberías
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;
}
Tenga en cuenta lo que ParoXon comentó en su pregunta.
Debe crear un archivo other.cpp que contenga la implementación load_data de la función. El archivo other.h debe contener la declaración load_data de la función. En ese archivo (other.h) debe incluir todos los archivos necesarios para las funciones declaradas allí para trabajar. ¡Y no olvides protegerte contra los múltiples incluidos!
Archivo other.h
#ifndef __OTHER_H__
#define __OTHER_H__
#include <iostream>
#include <fstream>
char* load_data(int,int);//no implementation
#endif
Archivo other.cpp
#include "other.h" //assumes other.h and other.cpp in same directory
char* load_data(int begin,int amount){
//load_data implementation
}