• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmienna nie jest dostępna

0 głosów
60 wizyt
pytanie zadane 4 dni temu w C i C++ przez tymek112 Obywatel (1,170 p.)
Hej wszystkim. Piszę program do obliczania wzorów. Problem polega na tym że zmienna pattern nie jest dostępna dla innych funkcji. Użytkownik pisze wzór(zmienna pattern) potem powiniem sie pokazac wzor i obliczenie ale (moim zdaniem) zmienna nie jest dostepna dla innych funkcji no i pokazuje sie else "nie znam takiego wzoru" .link do Git Hub. https://github.com/Tymson122/wzorki

1 odpowiedź

+1 głos
odpowiedź 4 dni temu przez Apled Gaduła (4,920 p.)

Masz zmienną pattern w pliku patterns.cpp i w mainie. Między nimi nie ma żadnej korelacji i skąd ten problem. 

Podajesz jakąś wartość w main, ale pattern wewnątrz patterns.cpp jest pusty. Dodaj do tej funkcji parametr, który będzie zestawiał wewnętrzne ify z podaną jako argument wartością. 

komentarz 4 dni temu przez tymek112 Obywatel (1,170 p.)

Nie do końca rozumiem. Załóżmy że usuwam z maina pattern. i jest on deklarowany w funkcji write_pattern(). Co teraz?

komentarz 4 dni temu przez Apled Gaduła (4,920 p.)

Nie o to chodzi. Masz pattern wewnątrz patterns.cpp, a w main podajesz cin'em pattern, który jest inną zmienna. Dlatego wewnątrz funkcji "nie widzi" wartości, bo próbuje ja porównać z pattern, który jest wewnątrz pattern.cpp, a nie w pliku z main. Tylko nazwy są takie same, ale jest inny zakres widoczności. Nie ma między nimi powiązania.

Możesz zmienić deklaracje na void choose_pattern(string pattern) i bardzo prosto przebudować logikę, bo sposób w jaki ty to robisz jest po prostu kiepski i bałaganiarski. 

komentarz 4 dni temu przez tymek112 Obywatel (1,170 p.)

Czy mógł byś sprawdzić czy dobrze to napisałem? https://github.com/Tymson122/wzorki

1
komentarz 4 dni temu przez Apled Gaduła (4,920 p.)

Nie do końca rozumiesz działanie funkcji i klas i przez to masz takie problemy.

string pattern; i int a, b, total; powinny być wewnątrz klasy jako private, parametr do funkcji dodałeś tylko w .cpp, a w .h już nie, w main przy wywolaniu funkcji nie podajesz argumentów. I rzeczy, do których można by się przyczepić jest więcej. 

Wróć do przerobienia ponownie tych tematów, bo bez zrozumienia jak to funkcjonuje takie szarżowanie nic ci nie da, bo będziesz blokował się na prostych rzeczach.

I jak tworzysz klasy to pliki nazywasz tak samo dla pliku .h i odpowiadającemu mu .cpp. A nie jeden po polsku, drugi po angielsku i oba inaczej 

Podobne pytania

0 głosów
0 odpowiedzi 97 wizyt
0 głosów
2 odpowiedzi 109 wizyt
0 głosów
1 odpowiedź 112 wizyt
pytanie zadane 13 października 2016 w Systemy CMS przez dizek Nowicjusz (120 p.)

88,311 zapytań

136,904 odpowiedzi

305,517 komentarzy

58,593 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...