Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: Fenêtre et sf::NonCopyable  (Read 3791 times)

0 Members and 1 Guest are viewing this topic.

Cmdu76

  • Full Member
  • ***
  • Posts: 194
    • View Profile
Fenêtre et sf::NonCopyable
« on: May 25, 2013, 06:56:02 pm »
Bonjour,

j'aimerais utiliser une sf::RenderWindow dans une classe alors que celle-ci soit crée ailleurs.

Voici ce que je voudrais faire :

Application.cpp
Application::Application(sf::RenderWindow window) : m_window(window)
{

}

Si vous avez un autre moyen, j'ai pensé aux pointeurs mais je ne sais pas si cela va marcher aussi ...
Sinon je peux mettre des sf::RenderWindow& window mais ducoup faut que je le mette à pas mal de fonctions...
« Last Edit: May 25, 2013, 07:08:28 pm by Cmdu76 »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Fenêtre et sf::NonCopyable
« Reply #1 on: May 25, 2013, 08:37:40 pm »
Il faut en effet passer et stocker un pointeur ou une référence, puisque tu ne peux pas copier une instance de fenêtre.
Laurent Gomila - SFML developer

Cmdu76

  • Full Member
  • ***
  • Posts: 194
    • View Profile
Re : Fenêtre et sf::NonCopyable
« Reply #2 on: June 02, 2013, 07:22:13 pm »
Désolé de relever ce sujet, mais j'ai trouvé bête d'en refaire un nouveau pour traiter de la même chose...

Je viens de voir sur un projet open source qu'il passait sa RenderWindow en variable globale, je pense que c'est une solution assez simple :)
Donc ducoup pas de pointeurs ni de réferences :)
Parce que les pointeurs peuvent mener aux erreurs et les références faut en mettre beaucoup et cela devient rapidement lourd...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : Fenêtre et sf::NonCopyable
« Reply #3 on: June 02, 2013, 07:29:04 pm »
Quote
Je viens de voir sur un projet open source qu'il passait sa RenderWindow en variable globale, je pense que c'est une solution assez simple
La pire. A éviter. D'ailleurs tout accès global à une variable est à éviter, de manière général.
En plus avoir une instance de sf::RenderWindow globale va te créer des problèmes potentiels bien pire à traiter.

Quote
Parce que les pointeurs peuvent mener aux erreurs et les références faut en mettre beaucoup et cela devient rapidement lourd...
On dirait un truc que tu aurais lu sur les forums de jeuxvideo.com et que tu répétes à tout va sans vraiment chercher à comprendre ;D
Sérieusement, c'est archi-faux, donc ne t'arrête pas sur ce genre d'idée préconçue.
Laurent Gomila - SFML developer

Cmdu76

  • Full Member
  • ***
  • Posts: 194
    • View Profile
Re : Fenêtre et sf::NonCopyable
« Reply #4 on: June 04, 2013, 11:09:11 pm »
Bon okay je suis d'accord j'ai jamais encore eu de problème avec les pointeurs mais sur le Sdz, on m'a dit que ça pouvait provoquer des erreurs...
Les références je dis ça par moi même par ma courte expérience. Ajouter un argument sf::RenderWindow partout et assez chiant à la fin...
Et sinon je me disais aussi que j'avais lu quelque part que les variables globales c'était vraiment pas bien donc j'attendais une réaction :)

Merci encore Laurent :)

Cpl.Bator

  • Hero Member
  • *****
  • Posts: 540
    • View Profile
Re : Fenêtre et sf::NonCopyable
« Reply #5 on: June 05, 2013, 01:39:30 am »
Dérive ta classe application avec sf::RenderWindow , pas de pointeur , pas de référence , pas de variable globale.

Cmdu76

  • Full Member
  • ***
  • Posts: 194
    • View Profile
Re : Fenêtre et sf::NonCopyable
« Reply #6 on: June 05, 2013, 02:09:33 pm »
Qu'est-ce que tu appelles dériver ? Faire une classe qui hérite de RenderWindow ?

Cpl.Bator

  • Hero Member
  • *****
  • Posts: 540
    • View Profile
Re : Fenêtre et sf::NonCopyable
« Reply #7 on: June 05, 2013, 03:02:04 pm »
oui.

 

anything