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

Zmienna nie jest dostępna

Object Storage Arubacloud
0 głosów
192 wizyt
pytanie zadane 20 czerwca 2022 w C i C++ przez tymek112 Obywatel (1,530 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ź 20 czerwca 2022 przez Apled Dyskutant (9,520 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 20 czerwca 2022 przez tymek112 Obywatel (1,530 p.)

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

komentarz 20 czerwca 2022 przez Apled Dyskutant (9,520 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 20 czerwca 2022 przez tymek112 Obywatel (1,530 p.)

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

1
komentarz 20 czerwca 2022 przez Apled Dyskutant (9,520 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
2 odpowiedzi 113 wizyt
pytanie zadane 11 września 2022 w PHP przez mn130496 Gaduła (3,530 p.)
0 głosów
0 odpowiedzi 135 wizyt
0 głosów
2 odpowiedzi 202 wizyt

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...