Question

J'ai un programme appelé main:

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

puis autre.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 j'obtiens l'erreur:

  

'seekg': identifiant introuvable

pourquoi ai-je cette erreur et comment puis-je la corriger?

Était-ce utile?

La solution

seekg est une méthode de la classe fstream (déclarée dans istream).

Vous n'en avez instancié aucun.

Prenez ceci comme 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 /

Alors, 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;
}

Tenez compte des commentaires de ParoXon dans votre question.

Vous devriez 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 les fonctions déclarées fonctionner. Et n'oubliez pas de vous protéger contre les inclus multiples!

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
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top