New et delete, wxWidgets

Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008 - 24 nov. 2007 à 14:54
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 24 nov. 2007 à 15:48
Bojour à tous !

J'ai commencé à coder une application utilisant wxWidget :

class Application : public wxApp
{
   public:
      virtual bool OnInit();
};

class Fenetre : public wxFrame
{
   public:
      Fenetre(const wxString& titre, const wxPoint& position, const wxSize& taille, long style = wxDEFAULT_FRAME_STYLE);
      bool modif_fenetre_principale ();
      ...
};

Donc je crée mes éléments (boutons, ...) avec des :
   wxButton* button = new wxButton(this, ID_BUTTON, "Ajouter", wxDefaultPosition, wxDefaultSize, 0);
   sizer_gauche->Add(button, 0, wxALL|wxALIGN_CENTER, 5);
dans le constructeur 'Fenetre' (appelé dans OnInit).

Le problème c'est que dans ce OnInit, après avoir créé un "Fenetre *fenetre = new Fenetre", c'est que j'appelle la fonction modif_fenetre_principale.
Et dans celle-ci j'aimerais changer par exemple la police de quelques zones de texte ...

Le problème c'est que quand j'utilise un truc du genre "text_titre->SetFont(wxFont(12, wxBOLD, wxNORMAL, wxNORMAL));", j'ai un problème du compilateur comme quoi text_titre n'est pas défini !

Je comprend pas parce que normalement (enfin je crois) quand on déclare une variable avec new, on peut l'appeler de n'importe où après (jusqu'à ce qu'il y ait un delete), non ???

Pourquoi je ne peux pas accéder à text_titre (dans l'exemple) ???
Comment faire ???

Merci

3 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 nov. 2007 à 15:27
Oulala, tu crois mal, tu confonds "portée" et "durée de vie" d'une variable. Ca n'a rien avoir.

Donc:
"Je comprend pas parce que normalement (enfin je crois) quand on déclare
une variable avec new, on peut l'appeler de n'importe où après (jusqu'à
ce qu'il y ait un delete), non ???" => Non, tu ne peux pas.
0
Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008
24 nov. 2007 à 15:31
Ok, merci

J'vais aller réviser ....
(j'ai pas l'habitude d'utiliser les new er delete)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
24 nov. 2007 à 15:48
Dans ton cas, suffit de mettre ton pointeur en tant que membre de ta classe. Tu y auras accès dans toutes les fonctions membres.
0
Rejoignez-nous