Вопрос

У меня есть программа с именем main:

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

а затем 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;
}

и я получаю ошибку:

  

'seekg': идентификатор не найден

почему я получаю эту ошибку и как ее исправить?

Это было полезно?

Решение

seekg - это метод из класса fstream (объявлен в istream).

Вы не создали ни одного экземпляра.

Возьмите это в качестве примера

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

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

источник: http://www.cplusplus.com/reference/iostream/ IStream / seekg /

Итак, вы должны

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

Примите во внимание то, что ParoXon прокомментировал в вашем вопросе.

Вы должны создать файл other.cpp, содержащий реализацию load_data функции. Файл other.h должен содержать объявление load_data функции. В этом файле (other.h) вы должны включить все файлы, необходимые для функций, объявленных там для работы. И не забудьте защитить себя от множественных включений!

Файл other.h

#ifndef __OTHER_H__
#define  __OTHER_H__

#include <iostream>
#include <fstream>

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

Файл other.cpp

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

char* load_data(int begin,int amount){
      //load_data implementation
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top