Re: C++

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: guilde
Sujet: Re: C++
Salut !

Frédéric a écrit :
> [...] error: cannot declare member function 'static void
> MyMenu::on_time_selected(MenuComponent*)' to have static linkage


« static » ne signifie pas la même chose dans la déclaration d'une
classe et dans la définition d'une méthode/fonction.

Dans la déclaration de la classe :

    class MyMenu {
        ...
        static void on_time_selected(MenuComponent* p_menu_component);
        ...
    };


ça veut dire que on_time_selected() ne reçoit pas, quand elle est
appelée, le paramètre implicite « this ». Ça se comporte donc comme une
fonction ordinaire, sauf que son nom est préfixé par « MyMenu:: ».

Dans la définition :

    static void MyMenu::on_time_selected(MenuComponent* p_menu_component)
    { ... }


ça signifie que la fonction ne doit pas être visible de l'édition de
liens. Ce n'est pas vraiment ce que tu veux.

Supprime ce dernier « static » et je pense que ça devrait être bon.

À+,

Edgar.