Wyświetlanie grafiki w oddzielnej funkcji SFML
Ostatnio zmodyfikowano 2019-11-19 16:23
ziomek_680 Temat założony przez niniejszego użytkownika |
Wyświetlanie grafiki w oddzielnej funkcji SFML » 2019-11-09 20:20:06 Podczas proby kompliacji tego kodu kompilator wyrzuca taki bład: 'oknoAplikacji' was not declared in this scope #include <SFML/Graphics.hpp> #include <iostream>
void wyswietl();
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 600, 600, 32 ), "Saper" ); while( oknoAplikacji.isOpen() ) { sf::Event zdarzenie; while( oknoAplikacji.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) oknoAplikacji.close(); } wyswietl(); } }
void wyswietl() { oknoAplikacji.clear( sf::Color( 255, 0, 0 ) ); oknoAplikacji.display(); }
|
|
pekfos |
» 2019-11-09 20:31:28 Próbujesz się odwołać do zmiennej lokalnej z innej funkcji. SFML nie ma nic do rzeczy, coś takiego nigdy nie zadziała. Musisz przekazać okno do funkcji jako argument (przez referencję). |
|
ziomek_680 Temat założony przez niniejszego użytkownika |
» 2019-11-09 20:40:22 Dobra przekazanie obiektu do funkcji rozwiazalo problem. Myślałem ze obiekty sa globalne i mozna operowac na nich wszędzie. Dzieki za rozwianie wątpliwosci. |
|
pekfos |
» 2019-11-09 20:51:25 Myślałem ze obiekty sa globalne i mozna operowac na nich wszędzie. |
Są w C++ zmienne globalne, ale nie należy ich używać bez powodu. Gdyby wszystkie zmienne były globalne, nie dało by się programować przez ciągłe konflikty nazw i trudne do przewidzenia zachowanie kodu. |
|
RazzorFlame |
» 2019-11-14 11:06:42 Tutaj dodam też (dla potomnych), że utworzenie okna (typu RenderWindow) lub tekstury globalnie powoduje naruszenie dostępu pamięci, prawdopodobnie przez to, że w samym kodzie wewnątrz SFMLa zmienne globalne są używane w nieprzemyślany sposób. |
|
pekfos |
» 2019-11-16 22:08:25 |
|
RazzorFlame |
» 2019-11-19 16:23:58 Elegancko :) No właśnie, tak jak mówiłem - nie przemyśleli chyba tego. |
|
« 1 » |