Funkcja korzystająca ze zmiennych z drugiej funkcji

Odpowiedz Nowy wątek
2011-08-12 09:59
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()?

edytowany 1x, ostatnio: mimol, 2011-08-12 10:00

Pozostało 580 znaków

2011-08-12 10:05
matek

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.

Pozostało 580 znaków

2011-08-12 10:20
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?

Pozostało 580 znaków

2011-08-12 10:25
matek
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).

Pozostało 580 znaków

2011-08-12 10:33
matek
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'?

Pozostało 580 znaków

2011-08-12 10:45
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.

Na MIT uczyli programowania funkcyjnego i dobrze na tym wyszli :P - msm 2011-08-12 17:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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