Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Globalny obiekt sf::Window

Ostatnio zmodyfikowano 2012-09-05 20:47
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
[SFML] Globalny obiekt sf::Window
» 2012-09-04 20:57:08
Cześć znacie jakiś sposób na to aby obiekt sf::Window był widoczny w innych klasach bez konieczności podawania go jako parametr, czyli bez takiego czegoś:

C/C++
//Osobny plik
class _Player
{
public:
    void draw( sf::Window & ); //Chciałbym aby obiekt Window był tutaj widzialny bez podawania parametru w main
}
//....

int main()
{
    sf::Window Window;
    Player.draw( Window );
}
P-64377
akwes
» 2012-09-04 20:59:07
No to trzeba zrobić z tego obiekt globalny i tyle :P i inkludować wszędzie gdzie potrzebny.

Ewentualnie zrobić sobie jakąś globalną klasę z wszelakiej maści informacjami i między innymi tam wpakować wskaźnik.
P-64378
waxx
» 2012-09-04 21:00:22
ja trzymam go w singletonie
P-64379
diego997
Temat założony przez niniejszego użytkownika
» 2012-09-04 21:02:40
Czyli zrobic go jako globalny i do innego naglówku dodawać include "Main.cpp" ;d ?
P-64380
akwes
» 2012-09-04 21:10:01
Broń Boże!
P-64381
Mrovqa
» 2012-09-04 21:17:34
@diego997
zapamiętaj - nigdy nie include'uj plików .c/.cpp/etc. Jeżeli jesteś do tego zmuszony (choć zawsze da się to uniknąć) - źle zaprojektowałeś/zorganizowałeś projekt. Tak poza tym include'owanie tego jest bezsensem.
P-64382
diego997
Temat założony przez niniejszego użytkownika
» 2012-09-04 21:43:09
Czyli jeżeli zrobie zmienną globalną sf::Window Window w main.cpp to ona będzie widoczna też w innych plikach nagłówkowych ? Wiem że w symfonii było cos takiego jak extern ale nie do końca wiem jak użyć. A nie chcę tego robić metodą prób i błędów bo wiem że kiedyś podobnie robiłęm z nagłówkami niby działało ale niepoprawnie.


Robię w ten sposób i nie działa
C/C++
//Player.h

extern sf::Window Window;

class _Player
{
    sf::RectangleShape Shape;
public:
    void draw()
    {
        Window.draw( Shape );
    }
   
};
//

#include "Player.h"
extern sf::Window Window;
int main()
{
    _Player Player;
   
    Player.draw();
}
P-64383
ison
» 2012-09-04 22:17:12
zrób sobie
global.hpp
C/C++
#ifndef GLOBAL_HPP
#define GLOBAL_HPP

#include <SFML/Graphics.hpp>

extern sf::Window Window;

#endif
i
global.cpp
C/C++
#include "global.hpp"

sf::Window Window;
i dołącz global.hpp we wszystkich plikach, w których chcesz mieć Window
P-64384
« 1 » 2
  Strona 1 z 2 Następna strona