Może mi ktoś powiedzieć co jest źle napisane w tym programie? Oglądam sobie kurs online i program mam przepisany dokładnie tak samo jak na filmie, a ten się i tak nie uruchamia.
Gdy chcę uruchomić program, to widzę ten komunikat:
D:\petla\main.cpp||In function 'int main()':|
D:\petla\main.cpp|11|error: name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]|
D:\petla\main.cpp|11|note: (if you use '-fpermissive' G++ will accept your code)|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
A sam program wygląda tak:
#include <iostream>
#include <windows.h>
using namespace std;
int main()
;;;;
for(int i=15; i>=0; i--)
Sleep(1000);
cout << i << endl;
cout << "Boom";
return 0;
;;;;
A tutaj filmik z którego się uczę:
https://youtu.be/y6GOYVTVvqo?list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo&t=658
Ja siedzę w Javie i C++ nie ruszałem z dobrych kilka lat, ale jeśli error coś sugeruje, to obstawiam że "i" które deklarujesz w pętli siedzi poza scopem fora w którym powinno być używane.
Wrzuć to w klamry i daj znać czy działa.
Poczytaj też o zasięgu zmiennych.
program mam przepisany dokładnie tak samo jak na filmie, a ten się i tak nie uruchamia.
Właśnie, że nie masz przepisanego dokładnie jak na filmie, a kompilator pisze dokładnie co mu nie pasuje.
Używasz lokalnej zmiennej 'i' poza obszarem w jakim została zdefiniowana. Zobacz listing raz jeszcze i zobacz co pominąłeś, dokładnie 2 znaki:)
Podpowiem tylko tyle, że gdyby ten program mimo wszystko zadziałał, to w obecnej formie nie wyświetliłby odliczania od 15 do 0, tylko widziałbyś czarny ekran przez 15 sekund, a potem pojawiłoby się
0
BOOM
Specjalnie nie podaję rozwiązania, bo jak trochę pomyślisz, to na dłużej zapamiętasz.
EDIT: Amadeusz podał odpowiedź jak pisałem:)
Ok. Zapomniałem o klamrach. Teraz wszystko śmiga. Dzięki za odpowiedzi, temat zamykam.