Я открываю файл в 1 функции и пытаюсь использовать указатель этого в другой функции. Но я не знаю, почему он не работает. Ниже приведен код.Имея проблему управления памятью с файлом
void ReadFile()
{
float data;
int total_rows, pairs;
double longitude, latitude;
{
GsmFingreprintEuc *g;
ll.push_front(new GsmFingreprintEuc);
if(file_ptr.is_open())
cout<<"Yes!!"<<endl;
else
cout<<"NO!!"<<endl;
file_ptr >> data;
total_rows = data;
cout<<"Total Rows:"<<total_rows<<endl;
for (int i = 0; i < total_rows; i++)
{
g = ll.front();
file_ptr >> data;
pairs = data;
for (int j = 0; j < pairs; j++)
{
int id;
double value;
file_ptr >> data;
id = data;
file_ptr >> data;
value = data;
g->add_map(id, value);
}
file_ptr >> data;
latitude = data;
g->set_latitude(latitude);
file_ptr >> data;
longitude = data;
g->set_longitude(longitude);
}
}
cout<<"Size: "<<ll.size()<<endl;
}
DtFileReaderEuc(string file_path)
{
cout << "I am in Constructor" << endl;
cout << file_path << endl;
fstream file_ptr(file_path.c_str(), std::ios_base::in);
if (file_ptr.is_open()) {
cout << "Yahhy!! file Opend successfully" << endl;
float data;
file_ptr >> data;
double total_rows = data;
cout<<"Total Rows:"<<total_rows<<endl;
//file_ptr = myfile;
ReadFile();
//myfile.close();
} else
cout << "Wohoo!! Wrong path" << endl;
cout << "Done!!" << endl;
}
};
и когда я RUND этот выходной код: «Я в конструкторе /home/umar/Desktop/DataFile/dha_dataset.gfp Yahhy !! файл успешно открытые компанией Всего Ряды: 7257 НЕТ! ! Всего строк: 0 Размер: 1 Done !! "
Заранее спасибо
Это не должно компилироваться! 'file_ptr' (который не является указателем, кстати) локален для' DtFileReaderEuc' и не может использоваться нигде. Вы можете передать его в качестве аргумента в «ReadFile». – BoBTFish
@BoBTFish, но его компиляция. есть ли еще что делать, не передавая его в качестве аргумента? – OOkhan
Хорошо, я даже не могу начать превращать это во что-то, что я могу скомпилировать. Слишком большая часть реального кода отсутствует. Создайте [Short, Self Contained, Correct Example] (http://sscce.org). Кроме того, прочитайте [это] (http://kuhllib.com/2012/01/14/stop-excessive-use-of-stdendl/) и [это] (http://stackoverflow.com/q/1452721/1171191). – BoBTFish