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

Auteur Sujet: Problème avec la fonction draw de sf::drawable  (Lu 3952 fois)

0 Membres et 1 Invité sur ce sujet

Skamer

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Problème avec la fonction draw de sf::drawable
« le: Mai 26, 2012, 03:07:03 am »
Bonsoir,  :)

Je suis entrain de réaliser une petite GUI.
Néanmois j'ai un petit problème avec la fonction draw() hérité de sf::drawable.

Je crée ma classe Widget dans un namespace xgui qui herite de drawable et de Object .

Widget.hpp
#ifndef WIDGET_HPP
#define WIDGET_HPP

#include <SFML/Graphics.hpp>

namespace xgui {

class Object;
class Widget : public sf::Drawable, public Object
{
public:
    Widget(Object *parent = 0);

    // Widget Destructor
    virtual ~Widget();

    // Render
    virtual void draw(sf::RenderTarget &target, sf::RenderStates states) const;

};

}

Voici le contenu de ma fonction draw() dans Widget.cpp

void Widget::draw(sf::RenderTarget &target, sf::RenderStates states) const
{
    for(std::list<Widget*>::const_iterator it = m_child.begin(); it != m_child.end(); it++)
        target.draw(*it, states);
}
 

J'obtiens cette erreur ci-dessous :
error: no matching function for call to 'sf::RenderTarget::draw(xgui::Widget* const&, sf::RenderStates&

Avec une petit note :
note:   no known conversion for argument 1 from 'xgui::Widget* const' to 'const sf::Drawable&'


D’après moi, il me semble que je dois faire un operator pour une conversion quelconque mais je suis pas sur .

Merci d'avance pour votre aide.

Cordialement Skamer.
« Modifié: Mai 26, 2012, 03:09:38 am par Skamer »

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Problème avec la fonction draw de sf::drawable
« Réponse #1 le: Mai 26, 2012, 03:09:47 am »
C'est target.draw(**it, states); vu que tu veux pas un pointeur mais une ref

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec la fonction draw de sf::drawable
« Réponse #2 le: Mai 26, 2012, 08:12:15 am »
C'est surtout (*it)->draw(target, states).
Laurent Gomila - SFML developer

Skamer

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : Problème avec la fonction draw de sf::drawable
« Réponse #3 le: Mai 26, 2012, 02:19:03 pm »
En effet,  ça marche.  :D

Etant donnée, que je travaille à la fois sur un projet utilisant SFML 1.6 et celle-ci en SFML 2.0 .
Au début, j'avais utilisé la fonction Render() mais je me suis rendu compte qu'elle n'existait plus et que c'est maintenant draw() qui faut utiliser.

Donc je m'étais habitué à écrire ceci avec la fonction render() de la SFML :
App.draw(*it)

Merci, pour votre aide.

Cordialement Skamer.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec la fonction draw de sf::drawable
« Réponse #4 le: Mai 26, 2012, 02:28:11 pm »
Ah non pardon, j'ai dit une grosse connerie :o

C'est bien target.draw(**it, states). Comme quand tu dessines l'objet en dehors d'un Drawable, quoi.

Quelle honte...
Laurent Gomila - SFML developer

Orwel

  • Full Member
  • ***
  • Messages: 208
    • Voir le profil
Re : Problème avec la fonction draw de sf::drawable
« Réponse #5 le: Mai 29, 2012, 09:33:27 pm »
Quelle est la différence entre les deux  ???
Pour moi l'effet est le même, parce que le Render va appelé la fonction du Drawable  :P
Citer
Comme quand tu dessines l'objet en dehors d'un Drawable, quoi.

Que veut-dire "en dehors d'un Drawable". Pour moi, il est en plein dedans vus que c'est la réimplantation de la fonction Draw  :o
« Modifié: Mai 29, 2012, 10:02:06 pm par Orwel »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème avec la fonction draw de sf::drawable
« Réponse #6 le: Mai 29, 2012, 09:40:02 pm »
Citer
Quelle est la différence entre les deux
Là maintenant dans ce contexte, aucune. Mais ça pourrait changer un jour. Et puis tu ne peux pas appeler cette fonction depuis n'importe où, elle n'est pas publique.

Citer
Que veut-dire "en dehors d'un Drawable". Pour moi, il est en plein de dedans vus que c'est la réimplantation de la fonction Draw
Très précisément. tu es dans un Drawable, c'est pour ça que j'ai dit "comme quand tu es en dehors d'un Drawable" ;)
Laurent Gomila - SFML developer