IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SFML Discussion :

[SFML] Erreur étrange


Sujet :

SFML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 52
    Points
    52
    Par défaut [SFML] Erreur étrange
    Bonjour à tous !

    Dernièrement, j'ai essayé de faire un éditeur de map. Cependant, j'ai un problème lors de la compilation du programme.

    Le programme est relativement simple. Le constructeur d'un objet de type MapEditor fait les choses suivantes :
    Premièrement, il charge toutes les images qui se situent dans un dossier Graphics/Tilesets/mapX.png où X est une lettre de l'alphabet.
    Deuxièmement, il fais la conversion de sf::Image à sf::Sprite.
    Finalement, il découpe chaque sf::Sprite ainsi générés en carré de taille 32x32 qu'il stock dans l'attribut de type vector<sf::Sprite>. Tout cela se passe dans la fonction dans le constructeur de la classe MapEditor.

    Je précise que l'erreur a lieu dans le main à la ligne où je fais ceci : test.showSprite(App);
    Le compilateur m'indique cela : error: request for member `showSprite' in `test', which is of non-class type `MapEditor ()()'.


    J'ai les trois fichiers suivants :

    Le main,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #include <iostream>
    #include <vector>
    #include <string>
    #include <SFML/Audio.hpp>
    #include <SFML/Graphics.hpp>
    #include "mapeditor.h"
     
    using namespace std;
     
    void window(unsigned int width, unsigned int height, string windowName);
    void Editor(sf::RenderWindow& App);
     
    int main()
    {
        window(800, 640, "Map Editor");
     
        return EXIT_SUCCESS;
    }
     
    void window(unsigned int width, unsigned int height, string windowName)
    {
        sf::RenderWindow App(sf::VideoMode(width, height, 32), windowName, sf::Style::Close);
        App.UseVerticalSync(true);
     
        MapEditor test();
     
        while(App.IsOpened())
        {
            sf::Event Event;
     
            while(App.GetEvent(Event))
            {
                if (Event.Type == sf::Event::Closed)
                App.Close();
     
                if ((Event.Type == sf::Event::KeyPressed) and (Event.Key.Code == sf::Key::Escape))
                App.Close();
            }
            App.Clear();
     
            test.showSprite(App);
     
            App.Display();
        }
    }
    MapEditor.h,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #ifndef MAPEDITOR_H
    #define MAPEDITOR_H
     
    #include <vector>
    #include <string>
    #include <SFML/Audio.hpp>
    #include <SFML/Graphics.hpp>
     
    class MapEditor
    {
        private:
            std::vector<sf::Image> m_allImg;
            std::vector<sf::Sprite> m_allSpr;
     
        public:
            MapEditor();
            virtual ~MapEditor() {}
     
            void showSprite(sf::RenderWindow& App);
    };
     
    #endif // MAPEDITOR_H
    MapEditor.cpp,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include "mapeditor.h"
     
    using namespace std;
     
    MapEditor::MapEditor()
    {
        vector<sf::Image> m_allImg;
        vector<sf::Sprite> m_allSpr;
        string mapName, file("Graphics/Tilesets/map"), ext(".png");
        sf::Image img;
        sf::Sprite spr;
        unsigned int c(97);//char(97) == 'a'
     
        mapName = file + char(c) + ext;
        while(img.LoadFromFile(mapName.c_str())){
            ++c;
            mapName = file + char(c) + ext;
            m_allImg.push_back(img);
        }
     
        for(unsigned int i(0); i < m_allImg.size(); ++i)
        {
            spr.SetImage(m_allImg[i]);
            for(unsigned int j(0); j < m_allImg[i].GetWidth(); j+=32)
            {
                for(unsigned int k(0); k < m_allImg[i].GetHeight(); k+=32)
                {
                    spr.SetSubRect(sf::IntRect(j,k,j+32,k+32));
                    m_allSpr.push_back(spr);
                }
            }
        }
    }
     
    void MapEditor::showSprite(sf::RenderWindow& App)
    {
        App.Draw(m_allSpr[0]);
    }
    Le compilateur m'indique l'erreur suivante :
    main.cpp||In function `void window(unsigned int, unsigned int, std::string)':
    main.cpp|41|error: request for member `showSprite' in `test', which is of non-class type `MapEditor ()()'|
    ||=== Build finished: 1 errors, 0 warnings ===|
    Merci beaucoup de votre aide, c'est sympa.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ca c'est une déclaration de fonction, pas de variable. Retire donc les parenthèses.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Oui ! Merci infiniment. C'est moi qui suis absurde et abracadabrant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [vector] erreur étrange
    Par Sp4ce dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 10/10/2007, 07h57
  2. Erreur étrange au moment de détruire la TForm
    Par Taka's tiger dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/01/2007, 16h56
  3. Message d'erreur étrange sur mon serveur
    Par irnatene dans le forum Mandriva / Mageia
    Réponses: 3
    Dernier message: 28/11/2006, 14h20
  4. Message d'erreur étrange
    Par maitreblitosaure dans le forum Access
    Réponses: 10
    Dernier message: 29/06/2006, 11h45
  5. Erreur étrange sur recvfrom
    Par Gore dans le forum Développement
    Réponses: 2
    Dernier message: 17/02/2005, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo