Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Juste une remarque au sujet de Vector2f, Vector2i et companie.  (Lu 6415 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Juste une remarque au sujet de Vector2f, Vector2i et companie.
« le: Janvier 23, 2013, 09:15:57 am »
Heu tu t'es un peu cassé la tête la en refaisant à chaque fois une classe pour les vecteurs de float, de int, d'unsigned int, etc...
Il y a moyen de faire plus simple si tu sais utilisé les "template." ;)
Ca se voit que tu t'inspires beaucoup de opengl qui a été codé en C mais si tu fais ta librairie compatible en c++ uniquement, autant utiliser toutes les nouveautés de l'évolution du langage C. ;)
« Modifié: Janvier 23, 2013, 09:18:20 am par Lolilolight »

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #1 le: Janvier 23, 2013, 09:57:10 am »
SFML / OS X developer

Bigz

  • Full Member
  • ***
  • Messages: 154
    • Voir le profil
    • Bigz.fr
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #2 le: Janvier 23, 2013, 10:18:31 am »
Laurent a juste défini trois types de Vector2 (et Vector3) qui sont les plus utilisés pour pouvoir plus rapidement les discerner et les utiliser.

Comme le dit Hiura, regarde les sources =)

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #3 le: Janvier 23, 2013, 11:12:52 am »
Heu tu t'es un peu cassé la tête la en refaisant à chaque fois une classe pour les vecteurs de float, de int, d'unsigned int, etc...
Il y a moyen de faire plus simple si tu sais utilisé les "template." ;)
Ca se voit que tu t'inspires beaucoup de opengl qui a été codé en C mais si tu fais ta librairie compatible en c++ uniquement, autant utiliser toutes les nouveautés de l'évolution du langage C. ;)

Lolilol, je crois que tu as parlé trop vite :D
Je pense que Laurent sait ce qu'il fait, il suffit d'un regard sur les sources pour voir que c'est très bien foutu...

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #4 le: Janvier 23, 2013, 11:24:52 am »
Ha ok, là je comprends mieux. ^^


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #5 le: Janvier 23, 2013, 02:00:51 pm »
C'est vachement constructif de faire ce genre de remarque sans même prendre la peine de regarder...  :-\
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #6 le: Février 07, 2013, 12:18:54 pm »
Erf non mais j'ai fais cette remarque juste parce que on pouvait construire un Vector2i en lui passant des float en paramètre, mais bon normalement on ne peut pas si on utilise la redéfinition de template quand on défini plusieurs type de vecteurs, alors ça m'a induit en erreur, enfin soit..., ce n'est pas grâve. ^^

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #7 le: Février 07, 2013, 12:20:50 pm »
Oui, on peut toujours faire ça temps qu'il existe une conversion implicit de U à T, avec U = float, T = int.
SFML / OS X developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #8 le: Février 07, 2013, 12:23:22 pm »
Ha ok moi je ne procède pas comme ça, je fais une redéfinition de template pour chaque définition de vecteur par exemple avec Vector2f je ne peux lui passer que des type float en argument mais bon ce n'est pas grâve.
Avec la conversion implicite on peut en effet aussi faire comme ça. ^^

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #9 le: Février 07, 2013, 12:26:16 pm »
Ce que je voulais dire, c'est que ce n'est pas toi qui gère les conversions implicites mais le compilateur.

Par exemple, si tu as une fonction void f(float x), tu peux lui passer 3, 3.0 ou encore 3.f et ça va marcher. Le fait que ce soit un template n'y change rien étant donné que quand le type du template est spécifié, ça revient à une fonction normale.
SFML / OS X developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #10 le: Février 07, 2013, 01:53:33 pm »
Oui je sais ça mais il me semble qu'il y ai moyen de faire des classes ou fonction template qui n'accepte qu'une seule type de donnée.

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #11 le: Février 07, 2013, 01:57:38 pm »
il faut jouer avec le mot clef 'explicit' à ce moment là.
SFML / OS X developer

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #12 le: Février 07, 2013, 02:01:31 pm »
Pas de manière triviale. Il faut sortir des cochonneries de meta-programmation.

Ca peut aussi arriver lorsque tu as plusieurs surcharges d'une fonction, dont certaines templates, et que laisses le compilo déduire les paramètres templates (typiquement : un opérateur). Par exemple, il me semble que tu ne peux pas faire "sf::Vector2f / int". Mais là ce n'est pas intentionnel.

Citer
il faut jouer avec le mot clef 'explicit' à ce moment là.
Ce mot-clé ne sert qu'à éviter qu'un constructeur à 1 paramètre ne soit appelé implicitement (et en C++11, ça marche aussi pour les opérateurs de conversion). C'est pas vraiment la même chose.
Laurent Gomila - SFML developer

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Juste une remarque au sujet de Vector2f, Vector2i et companie.
« Réponse #13 le: Février 07, 2013, 02:05:00 pm »
Citer
Ce mot-clé ne sert qu'à éviter qu'un constructeur à 1 paramètre ne soit appelé implicitement (et en C++11, ça marche aussi pour les opérateurs de conversion). C'est pas vraiment la même chose.
Juste ! J'avais oublié que ce n'était que pour les constructeurs..
SFML / OS X developer

 

anything