Funkcja korzystająca ze zmiennych z drugiej funkcji

0

Witam.
Napisałem funkcje która sprawdza czy plik istnieje i drugą która oblicza liczbę wierszy w pliku.

void shortroute::read_file(){
	string filename;//filename
	ifstream file; //input file
	cout<<"Please enter name of file which store data.\n";
	getline (cin,filename);
	file.open(filename.c_str());
	if(file.good()){
		lines=0;
		count();
		
	}else{
		cout<<"Enter correct filename!\n";
	}
}
void shortroute::count(){
string line;
while( getline(file, line)){
			lines++;
		}	
}

Dostaję błąd file undeclared identifier.
Jak zrobić żeby funkcja count 'widziała' zmienna file która jest zadeklarowana w f read_file()?

3

uczynić 'zmienną file' polem klasy/struktury. W tej chwili zmienna file jest zmienną lokalną dostępną tylko wewnątrz tej jednej metody, w której została zadeklarowana.

0
matek napisał(a)

uczynić 'zmienną file' polem klasy/struktury. W tej chwili zmienna file jest zmienną lokalną dostępną tylko wewnątrz tej jednej metody, w której została zadeklarowana.

No też tak myślę. Idąc tym tokiem myślenia, zmienna file powinna być dostępna dla funkcji count ponieważ funkcja ta znajduje się w funkcji read_file.
Gdzie popełniam błąd w rozumowaniu?

2

<quote=mimol>

matek napisał(a)

funkcja ta znajduje się w funkcji read_file.

uwierz mi, ona się tam nie znajduje. Ty ją tylko tam wywołujesz. Z tego kodu co tu zamieściłeś, obie te funkcje są powiązane ze sobą przez klasę, czyli są one metodami. Aby pomiędzy sobą mogły 'wymieniać' informacje, należałoby przekazać te zmienne, które chcesz przez argumenty, albo deklarując jak wcześniej mówiłem jako pole klasy najlepiej w sekcji prywatnej, lub uczynić je zmiennymi globalnymi (co jest najgorszym rozwiązaniem i o tym nawet nie myśl).

0

tak poza tym to pomyśl logicznie, funkcję count możesz wywołać również z innego miejsca w programie, skąd ona ma wiedzieć o istnieniu 'zmiennej file'?

1

Elementarz programowania się kłania. Dawniej najpierw się uczyło programowania proceduralnego i strukturalnego, a potem obiektowego ehh.... Poczytaj o zmiennych globalnych, lokalnych i o polach klas.

1 użytkowników online, w tym zalogowanych: 0, gości: 1