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

Auteur Sujet: [Résolu] Classe  (Lu 2675 fois)

0 Membres et 1 Invité sur ce sujet

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
[Résolu] Classe
« le: Mai 05, 2015, 07:00:08 pm »
Bonjour, voici mon petit problème :
       => Je voudrais utiliser une méthode d'une classe dans une autre. Voici les 2 classes concerner ainssi que mon ébauche sur ce problème.

Player.h
(click to show/hide)

player.cpp
(click to show/hide)

quest.h
(click to show/hide)

quest.cpp
(click to show/hide)

Je pense que j'ai oublier quelque chose mais je voie pas quoi.

Merci de votre aide ainsi que votre compréhension.
« Modifié: Mai 10, 2015, 07:43:35 pm par Jamese »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Classe
« Réponse #1 le: Mai 05, 2015, 07:56:26 pm »
Rien à voir avec SFML, c'est un problème basique de C++.

Tu instancies un objet de type Quest et tu appelles sa méthode quest1.
Ou si ça n'a pas de sens de créer une instance de Quest, tu fais en sorte que quest1 soit une méthode statique.

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Classe
« Réponse #2 le: Mai 05, 2015, 08:40:30 pm »
j'ai pas tout bien compris  :-[

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Classe
« Réponse #3 le: Mai 05, 2015, 09:43:43 pm »
Tu instancies un objet de type Quest et tu appelles sa méthode quest1.
Quest quest;
quest.quest1();
???

Et si tu le déclares ailleurs bah tu le passes en paramètre de fonction...
void Player::detection_quest(Quest& quest)
{

    if ((s_player.getPosition().y == 300 ) && (s_player.getPosition().x == 300 ))
    {
       quest.quest1();
    }

}


Et pour les méthodes statiques, c'est aussi du C++ de base sur lequel tu peux facilement te renseigner en faisant une recherche sur ton moteur de recherché préféré.
Si tu ne connais pas le C++ il faut l'apprendre car sinon tu n'arriveras jamais à rien avec SFML (en C++).
« Modifié: Mai 05, 2015, 11:43:03 pm par G. »

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Classe
« Réponse #4 le: Mai 05, 2015, 11:32:03 pm »
effectivement j'ai quelque petit point de c++ a approfondir.
La première solution a l'air plus facile a utiliser, mais quand je le fait mon compilo me ressort cette erreur :
    base operand of '->' has non-pointer type 'Quest' .

J'ai surement fait une erreur de syntaxe ou alors mal fait quelque chose.
#include <SFML/Graphics.hpp>
#include "Quest.h"


class Player : public sf::Drawable, public sf::Transformable
{
    public:

        sf::Texture t_playeur;
        sf::Sprite  s_player;
        Quest quest;

        Player();
 
        void detection_quest();

    private:
 

void Player::detection_quest()
{
    if ((s_player.getPosition().y == 300 ) && (s_player.getPosition().x == 300 ))
    {
        quest -> quest1();
    }
}
 

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Classe
« Réponse #5 le: Mai 05, 2015, 11:39:22 pm »
-> c'est pour les pointeurs et quest n'en est pas un... c'est écrit dans l'erreur.
Désolé c'est ce que j'ai écrit vite fait dans mon truc, ça aurait dû évidemment être quest.quest1()
« Modifié: Mai 05, 2015, 11:42:13 pm par G. »

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Classe
« Réponse #6 le: Mai 06, 2015, 12:39:29 pm »
ok pas de problème, sa marche j'ai plus d'erreur mais quand je réalise ma condition "atteindre la position", rien ne ce passe au niveau de ma classe quest  :'( alors que mon personnage change bien de position.

Je sait que j'en demande beaucoup mais la je sait vraiment pas quoi faire. 

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Classe
« Réponse #7 le: Mai 07, 2015, 04:51:12 pm »
T'es sûr que t'atteint réellement ta position ? getPosition().x et .y (qui sont des float) te renvoient réellement 300 tout pile ?

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Classe
« Réponse #8 le: Mai 08, 2015, 08:18:34 pm »
j'ai contourner le problème, et oui j'avais fait un petit système de débogage et je rentrer bien dans la condition.

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Classe
« Réponse #9 le: Mai 08, 2015, 09:25:29 pm »
Faut que le draw le Text qui est dans Quest si tu veux le voir.