Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de classe...

Sujet résolu
    15 mai 2019 à 19:49:18

    Bonjour,

    mon problème est très simple et se résout certainement en 20 touches sur le clavier, alors voilà, j'ai une classe "AnimationColor" qui est héritée de "Animation" voici donc les classes : 

    Les .h

    #ifndef ANIMATION_H_INCLUDED
    #define ANIMATION_H_INCLUDED
    #include <SFML/System.hpp>
    
    class Animation
    {
        protected:
    
        sf::Time m_time;
        const sf::Time m_duration;
        const int m_steps;
        int m_actualStep;
    
        public:
        Animation(sf::Time m_duration,int steps);
        void refresh(sf::Time dt);
        int getSteps();
        int getActualStep();
        int getDuration();
    
    };
    
    #endif // ANIMATION_H_INCLUDED
    

    #ifndef ANIMATIONCOLOR_H_INCLUDED
    #define ANIMATIONCOLOR_H_INCLUDED
    #include "Animation.h"
    #include <SFML/System.hpp>
    #include <SFML/Graphics.hpp>
    
    class AnimationColor : public Animation
    {
    
    sf::Color m_color;
    sf::Color m_colorGoal;
    
    public:
    
    AnimationColor(sf::Color color, sf::Color colorGoal);
    void setColorGoal(sf::Color colorGoal);
    sf::Color getColor();
    void refresh();
    
    };
    
    #endif // ANIMATIONCOLOR_H_INCLUDED
    

    Et les .cpp

    #include "Animation.h"
    #include <SFML/System.hpp>
    Animation::Animation(sf::Time duration,int steps):m_duration(duration),m_steps(steps)
    {
    
    }
    void Animation::refresh(sf::Time dt)
    {
        m_time+=dt;
        if(m_time>=m_duration)m_time=sf::Time::Zero;
        m_actualStep=(int)(m_time.asSeconds()/m_steps);
    }
    
    #include <SFML/System.hpp>
    #include <SFML/Graphics.hpp>
    #include "AnimationColor.h"
    #include "Animation.h"
    
    AnimationColor::AnimationColor(sf::Color color, sf::Color colorGoal):m_color(color),m_colorGoal(colorGoal)
    {
    
    }
    void AnimationColor::setColorGoal(sf::Color color goal)
    {
    
    }
    sf::Color AnimationColor::getColor()
    {
    
    }
    void AnimationColor::refresh()
    {
    
    }
    


    L'erreur donnée par mon compilateur est la suivante : D:\_PROGRAMMATION\C++\AnimationColor.cpp|6|error: no matching function for call to 'Animation::Animation()'|

    Mais je n'ai aucune idée du problème...Merci de votre aide d'avance ^^'

    EDIT : Erreur trouvé, il manquais le constructeur "Animation()" je ne pensais pas qu'il était obligatoire :/

    -
    Edité par DeveCout 15 mai 2019 à 19:50:46

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2019 à 20:05:29

      DeveCout a écrit:

      EDIT : Erreur trouvé, il manquais le constructeur "Animation()" je ne pensais pas qu'il était obligatoire :/

      -
      Edité par DeveCout il y a 11 minutes


      En regle general ( corrigez moi si je me trompe ) mais le compilateur te defini certains constructeur si tu n'en defini aucun. Si tu redefini un des constructeur , tu dois implicitement declarer et definir les autre. Comme tu as un constructeur prenant des parametre , ce qui peut impliquer  que ton objet n'est instantiable qu'avec des parametre, le compilateur ne t'as psa generer le code pour le constructeur par defaut.
      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2019 à 23:25:56

        Dans le constructeur de la class AnimationColor, tu n'indique pas comment initialiser la class mère.
        Le compilateur tente avec le constructeur par defaut qui forcément, n'existe pas.
        • Partager sur Facebook
        • Partager sur Twitter

        Problème de classe...

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown