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

Auteur Sujet: Impossible de faire passer un this en argument  (Lu 2149 fois)

0 Membres et 1 Invité sur ce sujet

Platon

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Impossible de faire passer un this en argument
« le: Février 26, 2015, 06:05:05 pm »
Bonjour,

Je rencontre actuellement un problème bloquant dont je ne trouve pas la solution, le but qu'un objet puisse envoyer un this ( donc un pointer vers lui même ) à un autre objet ( via son constructeur ) en argument.

voici ce que j'ai essayé en version simplifié qui ne fait apparaitre que le code du problème :

UnitTower.h

class UnitTower
{
public:
UnitTower();
~UnitTower();
sf::Sprite getSprite();
void update();
void setTarget(UnitMobile);
UnitMobile getTarget();

protected:
UnitMobile cible;
sf::Texture texture;
sf::Sprite sprite;
};

Une fonction dans le UnitTower.cpp qui doit crée un objet et envoyer un pointer de lui même

void UnitTower::update(){ Shoot shoot(this) }
le constructeur de l'objet qui récupère l'autre

class Shoot
{
public:
Shoot(UnitTower*);
~Shoot();
void fire();

protected:
sf::Texture texture;
sf::Sprite sprite;
int dommage;
UnitTower* tower;
sf::Clock clock;
};

Et son Shoot.cpp

Shoot::Shoot(UnitTower* tOwer)
{
tower = tOwer;
}

Je vous remercie d'avance et je continue à chercher ;)

Cdlm,

Phobizeur

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : Impossible de faire passer un this en argument
« Réponse #1 le: Février 26, 2015, 06:22:22 pm »
Shoot(UnitTower*); dans le .h et
Shoot::Shoot(UnitTower* tOwer) dans le .cpp.
Comme c'est bizarre.

Platon

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Impossible de faire passer un this en argument
« Réponse #2 le: Février 26, 2015, 06:34:48 pm »
C'est à dire ?
Je ne vois pas, je suis vraiment bloquée ^^

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Impossible de faire passer un this en argument
« Réponse #3 le: Février 26, 2015, 06:39:19 pm »
Quelle est l'erreur ?

(Aussi, ce n'est pas un problème lié à la SFML...)

Platon

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
    • E-mail
Re : Impossible de faire passer un this en argument
« Réponse #4 le: Février 26, 2015, 06:44:18 pm »
Voici l'erreur exacte :

1>UnitTower.cpp(46): error C2664: 'Shoot::Shoot(const Shoot &)' : cannot convert argument 1 from 'UnitTower' to 'const Shoot &'
1>          Reason: cannot convert from 'UnitTower' to 'const Shoot'
1>          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Merci à vous pour votre patiente.

S66

  • Full Member
  • ***
  • Messages: 120
  • *-*
    • Voir le profil
    • Teal
Re : Impossible de faire passer un this en argument
« Réponse #5 le: Février 28, 2015, 09:37:58 am »
Hum... quand même pas compliqué, il peut pas convertir un unitower en shoot.

kimci86

  • Full Member
  • ***
  • Messages: 124
    • Voir le profil
Re : Impossible de faire passer un this en argument
« Réponse #6 le: Février 28, 2015, 12:00:23 pm »
Si on simplifie davantage le code que tu donnes, il apparaît que le code suivant serait à l'origine du problème.
Pourtant, ce code est licite est compilé sans problème. Le problème doit venir d'ailleurs. Tu peux essayer de simplifier ton code jusqu'à qu'il soit valide pour déterminer la source du problème.

class UnitTower;

class Shoot
{
        public:
                Shoot(UnitTower* tower)
                 : tower(tower)
                {}

        protected:
                UnitTower* tower;
};

class UnitTower
{
        public:
                void update()
                {
                        Shoot shoot(this);
                }
};

int main()
{
        return 0;
}

victorlevasseur

  • Full Member
  • ***
  • Messages: 206
    • Voir le profil
Re : Impossible de faire passer un this en argument
« Réponse #7 le: Février 28, 2015, 12:34:31 pm »
Il y a deux fois tower (en argument du constructeur et en attribut), ça ne va pas poser de problèmes ?

kimci86

  • Full Member
  • ***
  • Messages: 124
    • Voir le profil
Re : Impossible de faire passer un this en argument
« Réponse #8 le: Février 28, 2015, 01:54:30 pm »
Il y a deux fois tower (en argument du constructeur et en attribut), ça ne va pas poser de problèmes ?
Non, ça ne pose pas de problème.
Tu peux trouver une explication ici.