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

Auteur Sujet: [Résolu]segfault..  (Lu 3050 fois)

0 Membres et 3 Invités sur ce sujet

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
[Résolu]segfault..
« le: Juin 14, 2013, 08:54:17 pm »
Bonsoir, je viens vous demander de l'aide car j'ai un problème avec une méthode virtuel

    void Slider::SetPosition(int x, int y)
    {
        Widget::SetPosition(x, y);
        button->SetPosition(x, y - (button->GetDimensions().height / 6));
    }

j'obtiens un jolie segfault au lancement de la fenêtre, et je ne comprend absolument pas pourquoi...



Merci pour votre aide.
« Modifié: Juin 14, 2013, 11:17:50 pm par cChaD »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : segfault..
« Réponse #1 le: Juin 14, 2013, 09:40:18 pm »
Utilise ton debugger. C'est fait pour ça. Parce que là, tous les membres du forum auront beau fixer ces 2 lignes de code pendant des heures, ça ne ferait pas avancer le schmilblick.
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : segfault..
« Réponse #2 le: Juin 14, 2013, 09:55:15 pm »

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : segfault..
« Réponse #3 le: Juin 14, 2013, 10:14:28 pm »
du franglais , berk...
ton shoot ne donne rien , à part que "dimension" est foireux.  ;)

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : segfault..
« Réponse #4 le: Juin 14, 2013, 10:27:25 pm »
tu franglais ? où ça ?

même si j'utilise ça j'ai un segfault

    void Slider::SetPosition(int x, int y)
    {
        Widget::SetPosition(x, y);
        button->SetPosition(x, y );
    }

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : segfault..
« Réponse #5 le: Juin 14, 2013, 10:42:34 pm »
Citer
this = 0xbaadf00d
Il faut apprendre à repérer ce genre d'adresse ;)

Je ne sais pas ce qu'elle signifie exactement (chaque compilo a ses propres conventions, il faut regarder la doc), mais ça sent l'appel virtuel depuis un constructeur, ou un truc de ce genre. Ou bien 'button' qui n'est pas alloué. Ce serait possible de voir le code de toutes les fonctions qu'on voit dans la pile d'appels ?
« Modifié: Juin 14, 2013, 10:46:27 pm par Laurent »
Laurent Gomila - SFML developer

cChaD

  • Full Member
  • ***
  • Messages: 117
    • Voir le profil
Re : segfault..
« Réponse #6 le: Juin 14, 2013, 10:50:03 pm »
    Dimensions Widget::GetDimensions() const
    {
        return dimensions;
    }

    void Slider::SetPosition(int x, int y)
    {
        Widget::SetPosition(x, y);
        button->SetPosition(x, y );
    }

    Slider::Slider(int posX, int posY)
    {
        // Charge la texture
        image.setTexture(EngineManager::GetInstance()->Graphic->GetTextureID(7));

        // Dimensions réels de l'image
        realDimensions.width = image.getTexture()->getSize().x;
        realDimensions.height = image.getTexture()->getSize().y;
        dimensions.width = realDimensions.width;
        dimensions.height = realDimensions.height;

        // Position
        SetPosition(posX, posY);

        // Margins
        SetMargins(50,0,20,0);

        // Boutton de slide
        button = new Button();
        button->SetTexture(EngineManager::GetInstance()->Graphic->GetTextureID(8));
        button->SetTextureRect(sf::IntRect(0,0,30,30), sf::IntRect(0,0,30,30), sf::IntRect(0,0,30,30));
        button->SetPosition(position.x, position.y - (button->GetDimensions().height / 6));
        button->SetPadding(0);
        button->SetMargins(0);

        // Est en mouvement
        draged = false;
    }
 

Ah oui, en effet c'est l'appel de SetPosition() dans le constructeur qui provoque ça, merci !
« Modifié: Juin 14, 2013, 11:06:09 pm par cChaD »

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : Re : segfault..
« Réponse #7 le: Juin 14, 2013, 11:12:02 pm »
tu franglais ? où ça ?

J'ai rien dit , dimension est anglais aussi ^^ , j'aurais mis size.
autant pour je.