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

Auteur Sujet: Problème dans Visual Studio 2012  (Lu 2983 fois)

0 Membres et 1 Invité sur ce sujet

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Problème dans Visual Studio 2012
« le: Octobre 27, 2013, 09:18:55 am »
Bonjour tout le monde,
Je codais une petite app paisiblement et puis soudain VS a encore une fois décider de montrer à quel point il était insupportable. Attention ouvrez grand les yeux et préparez-vous à voir quelque chose de stupide:

LoadingObject::LoadingObject() : sf::Drawable()
{
     //Bla bla bla des trucs
}

Rien de suspect à première vue? Oui mais super Visual Studio me sort    

IntelliSense : objet de type classe abstraite "LoadingObject" non autorisé :
fonction "sf::Drawable::draw" virtuel pure n'a pas de remplaçant

Et voici MA vue sur Visual Studio :
LoadingObject::LoadingObject() : sf::Drawable()

Oui! Visual Studio confond bien sf::Draw et sf::Drawable!

Quelqu'un saurait-il comment contourner le problème?
Merci
« Modifié: Octobre 28, 2013, 09:08:28 am par yhu420 »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Retarded Visual Studio 2012
« Réponse #1 le: Octobre 27, 2013, 01:00:08 pm »
Bah apparemment ça dit que la fonction draw de la classe dont tu hérites est virtuelle pure (elle n'a pas d'implémentation) et que tu ne l'as pas redéfinie. Et pas besoin de  : sf::Drawable() non ?
« Modifié: Octobre 27, 2013, 01:06:29 pm par G. »

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : Retarded Visual Studio 2012
« Réponse #2 le: Octobre 27, 2013, 03:26:52 pm »
Je te done mon header:

#pragma once

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include "Namespaces.h"

class LoadingObject : public sf::Drawable
{
public:
        LoadingObject();
        void OpenDoors();
        void CloseDoors();

        bool doorsAreClosed() const;
        bool doorsAreMoving() const;
        bool doorsStillOnScreen() const;
        ~LoadingObject();

protected:
        virtual void draw(sf::RenderTarget& target) const
        {
                target.draw(*rectl);
                target.draw(*rectr);
        }
        bool doorMoving;
        bool thisExists;

        sf::RectangleShape *rectl;
        sf::RectangleShape *rectr;

        sf::Texture *rectlTex;
        sf::Texture *rectrTex;

        sf::Texture *freezeImage;
};

Puis j'ai suivi tes conseils, j'ai enlevé le sf::Drawable() de l'implémentation du constructeur mais j'ai encore exactement les mêmes erreurs..

En fait ce que j'aimerai pouvoir faitre c'est window.draw(instance de LoadingObject);

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Retarded Visual Studio 2012
« Réponse #3 le: Octobre 27, 2013, 08:27:55 pm »
C'est pas très humble de ta part d'accuser comme ça le compilo alors que c'est juste toi qui n'arrive pas à copier correctement un prototype de fonction... :P

Sans parler du fait que Visual Studio n'a rien confondu du tout, et qu'il t'a donné un message d'erreur tout à fait pertinent et précis.
Laurent Gomila - SFML developer

yhu420

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
    • E-mail
Re : Retarded Visual Studio 2012
« Réponse #4 le: Octobre 28, 2013, 09:08:11 am »
Ok j'avoue je n'ai pas entièrement recopié le prototype, mais alors pourquoi diable à chaque fois que je tape sf::Drawable dans mon code il ne me surligne que sf::Draw ?
Pour l'instant merci quand même  à vous deux pour m'avoir aidé :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème dans Visual Studio 2012
« Réponse #5 le: Octobre 28, 2013, 09:16:38 am »
La coloration syntaxique n'est jamais parfaite. Mais c'est juste un outil de visualisation, il ne faut pas l'interpréter en erreurs de compilation ou autre.
Laurent Gomila - SFML developer