& # 8220; идентификатор поиска не найден & # 8221;
-
05-07-2019 - |
Вопрос
У меня есть программа с именем 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
}