Ругается на getline, а именно: 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\fstream(890): error C2248: std::basic_ios<_Elem,_Traits>::basic_ios: невозможно обратиться к private член, объявленному в классе "std::basic_ios<_Elem,_Traits>" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ios(176): см. объявление "std::basic_ios<_Elem,_Traits>::basic_ios" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> Сообщение диагностики возникло в созданной компилятором функции "std::basic_ifstream<_Elem,_Traits>::basic_ifstream(const std::basic_ifstream<_Elem,_Traits> &)" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ]
Копался в гугле, смотрел форумы — ответа не нашёл. Пробовал ставить ссылки — тоже не помогло.
Здравствуйте, pvirk, Вы писали:
P>Здравствуйте, VeryEasyLogin, Вы писали:
VEL>>Мне в программке нужна была функция, считывающая строки из файла. Написал код:
VEL>>
VEL>Ругается на getline, а именно: 1>>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\fstream(890): error C2248: std::basic_ios<_Elem,_Traits>::basic_ios: невозможно обратиться к private член, объявленному в классе "std::basic_ios<_Elem,_Traits>" 1>> with 1>> [ 1>> _Elem=char, 1>> _Traits=std::char_traits<char> 1>> ] 1>> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ios(176): см. объявление "std::basic_ios<_Elem,_Traits>::basic_ios" 1>> with 1>> [ 1>> _Elem=char, 1>> _Traits=std::char_traits<char> 1>> ] 1>> Сообщение диагностики возникло в созданной компилятором функции "std::basic_ifstream<_Elem,_Traits>::basic_ifstream(const std::basic_ifstream<_Elem,_Traits> &)" 1>> with 1>> [ 1>> _Elem=char, 1>> _Traits=std::char_traits<char> 1>> ] VEL>Копался в гугле, смотрел форумы — ответа не нашёл. Пробовал ставить ссылки — тоже не помогло.
используй передачу параметров по ссылке, а не по значению:
Здравствуйте, maykie, Вы писали:
M>Здравствуйте, VeryEasyLogin, Вы писали:
VEL>>Мне в программке нужна была функция, считывающая строки из файла. Написал код:
M>1) замени аргументы на ссылки M>2) getline возвращает stream&, а не бул. Используй
M>
Здравствуйте, maykie, Вы писали:
M>Здравствуйте, VeryEasyLogin, Вы писали:
VEL>>Мне в программке нужна была функция, считывающая строки из файла. Написал код:
M>1) замени аргументы на ссылки M>2) getline возвращает stream&, а не бул. Используй
M>
Здравствуйте, VeryEasyLogin, Вы писали:
VEL>Пробовал, не помогло. Тем более я писал, что уже пробовал передавать по ссылкам.
вам нужно еще разок попробовать проставить ссылки (без const)
возможно, ошибка в вызываемой функции, можете показать побольше кода
Здравствуйте, pvirk, Вы писали:
P>Здравствуйте, VeryEasyLogin, Вы писали:
VEL>>Пробовал, не помогло. Тем более я писал, что уже пробовал передавать по ссылкам.
P>Значит пиши сюда, какие инклюды у тебя включаются.
Вот мой весь код, пишу программку для запоминания англ. слов:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <Windows.h>
#include <string>
#include <vector>
using namespace std;
int sleepTime = 2000;
int openFile(ifstream f,string fname){
f.open((fname+".txt").c_str());
if(!f){
cerr << "Ошибка чтения файла " << fname << ".txt" << endl;
Sleep(sleepTime);
return 0;
}
}
void getVector(ifstream& f, vector<string>& vec){ //переписал, как у maykie, 1-й вариант сверху
string s;
while(f.good()){
getline(f, s);
vec.push_back(s);
}
}
int main()
{
setlocale(LC_ALL,"Russian");
cout << "Программка для запоминания слов\nКакие слова переводить?\n 1: Русские\n Любое другое: Английские\n E: выход" << endl;
char e;
cin >> e;
e = tolower(e);
bool EngToRus;
switch(e){
case '1': EngToRus = false; break;
case 'e': return 0; break;
default: EngToRus = true; break;
}
vector<string> words[2];
ifstream file1;
openFile(file1, "e");
getVector(file1, words[0]);
ifstream file2;
openFile(file2, "r");
getVector(file2, words[1]);
Sleep(sleepTime);
return 0;
}
Программу ещё допиливать придется (функцию openFile и конец кода), но этот код не работает.