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?

¿Fue útil?

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top