[C++] Problème int

fredvince Messages postés 14 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous.

Je rencontre actuellement un problème avec un "int".

Voici le code source de cet "int" :
int MyFrame::OnSelectionner_les_zones_a_analyser::GetValue()

L'erreur est la suivante : `class MyFrame::OnSelectionner_les_zones_a_analyser' is not a class or namespace.

J'ai d'abord pensé à une erreur de déclaration, mais non de ce côté là tout est correct.

Quelqu'un aurait-il une idée pour remédier à cet erreur ?

Merci pour toutes réponses postées
--
Venez visiter le site de WORLD-TOUTINFO ainsi que le site officiel de la team BFV avec son porjet d

7 réponses

  1. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    peut on voir les prototypes des méthodes :
    OnSelectionner_les_zones_a_analyser() ?
    GetValue() ?
    0
  2. Fredvince
     
    Oki, alors voilà ce que tu demandes, peut-être en ai-je mis trop mais bon :

    class MyFrame : public wxFrame
    {
    public:
    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
    long style = wxDEFAULT_FRAME_STYLE);
    void OnAnalyser(wxCommandEvent& event);
    void OnZone_de_quarantaine(wxCommandEvent& event);
    void OnJournal(wxCommandEvent& event);
    void OnSelectionner_les_zones_a_analyser(wxCommandEvent& event);
    void OnMise_a_jour(wxCommandEvent& event);
    void OnAide(wxCommandEvent& event);
    void OnQuitter(wxCommandEvent& event);
    void OnChiffre(wxCommandEvent& event);

    private:
    int Chiffre; //mémorise le chiffre sélectionné
    wxStaticText *Label;
    DECLARE_EVENT_TABLE()
    };

    enum
    {
    Minimal_Analyser = 1,
    Minimal_Zone_de_quarantaine = 2,
    Minimal_Journal = 3,
    Minimal_Selectionner_les_zones_a_analyser = 4,
    Minimal_Mise_a_jour = 5,
    Minimal_Aide = 6,
    Minimal_Quitter = 7,
    Minimal_Chiffre = 8,
    };

    class MyDialog : public wxDialog
    {
    public:
    MyDialog(wxWindow* parent, wxWindowID id, const wxString& title, int nb = 0);
    int GetValue();
    void SetValue(int);
    private:
    wxRadioButton *RadioBouton1;
    wxRadioButton *RadioBouton2;
    wxRadioButton *RadioBouton3;
    };

    .........
    .........

    void MyFrame::OnSelectionner_les_zones_a_analyser(wxCommandEvent& WXUNUSED(event))
    {
    MyDialog Selectionner_les_zones_a_analyser(NULL,8,"Titre",Chiffre);
    if ( Selectionner_les_zones_a_analyser.ShowModal() == wxID_OK )
    {
    wxString st = "Aucun";
    Chiffre = Selectionner_les_zones_a_analyser.GetValue();
    switch(Chiffre)
    {
    case 1 : st = "Un";
    break;
    case 2 : st = "Deux";
    break;
    case 3 : st = "Trois";
    break;
    }
    Label->SetLabel("N° Sélectionné : " + st);
    }
    }

    MyDialog::MyDialog(wxWindow* parent, wxWindowID id, const wxString& titre, int nb)
    : wxDialog(parent,id,titre,wxDefaultPosition,wxSize(240, 200))
    {
    RadioBouton1 = new wxRadioButton(this,-1,"Un");
    RadioBouton2 = new wxRadioButton(this,-1,"Deux");
    RadioBouton3 = new wxRadioButton(this,-1,"Trois");
    wxButton *MonBouton1 = new wxButton(this,wxID_OK,"Ok");
    wxButton *MonBouton2 = new wxButton(this,wxID_CANCEL,"Annuler");

    wxBoxSizer *sizer1 = new wxBoxSizer( wxVERTICAL );
    sizer1->Add(-1,25);
    sizer1->Add(RadioBouton1,0,wxALL,5);
    sizer1->Add(RadioBouton2,0,wxALL,5);
    sizer1->Add(RadioBouton3,0,wxALL,5);

    wxBoxSizer *sizer2 = new wxBoxSizer( wxHORIZONTAL );
    sizer2->Add(MonBouton1,0,wxBOTTOM | wxLEFT | wxRIGHT ,5);
    sizer2->Add(MonBouton2,0,wxBOTTOM | wxLEFT | wxRIGHT ,5);

    wxBoxSizer *Psizer = new wxBoxSizer( wxVERTICAL );
    Psizer->Add(sizer1,3,wxALIGN_CENTER);
    Psizer->Add(sizer2,1,wxALIGN_CENTER);
    SetSizer(Psizer);
    SetValue(nb);
    }

    int MyFrame::OnSelectionner_les_zones_a_analyser::GetValue() //ça coince à partir de là
    {
    int x = 0;
    if( RadioBouton1->GetValue() ) x = 1;
    if( RadioBouton2->GetValue() ) x = 2;
    if( RadioBouton3->GetValue() ) x = 3;
    return x;
    }

    void MyFrame::OnSelectionner_les_zones_a_analyser::SetValue(int x)
    {
    switch(x)
    {
    case 1 : RadioBouton1->SetValue(true);
    break;
    case 2 : RadioBouton2->SetValue(true);
    break;
    case 3 : RadioBouton3->SetValue(true);
    break;
    }
    }
    0
  3. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    GetValue() 
    étant une méthode disponible dans plusieurs classes
    différentes, il yen a une qui doit être déclarée virtuelle, celle que tu vas utiliser dans
    OnSelectionner_les_zones_a_analyser::

    (voir virtual)
    A+
    0
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut.
    pour moi, tu devrai declarer "OnSelectionner_les_zones_a_analyser" comme class et non comme "void"... (declare normalement une methode ,non?)
    Ou alors il y a quelque chose qui m'échappe.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fredvince Messages postés 14 Statut Membre
     
    B j'ai essayé mais rien à faire, cela ne fonctionne toujours pas...
    0
  7. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    MyFrame::OnSelectionner_les_zones_a_analyser::GetValue()
    fait référence à une fonction d'une class ou d'un "namespace"
    OnSelectionner_les_zones_a_analyser.
    Celle ci ne semble pas déclarer.
    donc déclare dans "MyFrame":
    class OnSelectionner_les_zones_a_analyser;
    et ensuite tu fait :
    class MyFrame::OnSelectionner_les_zones_a_analyser{//constructeur
    int GetValue();//etc...};
    int MyFrame::OnSelectionner_les_zones_a_analyser::GetValue(){//def de la fonction
    };
    ça devrai fonctionner je pense. A mon avis tu confond méthode/fonction et classe.
    Bonne chance.
    0
  8. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    int MyDialog::GetValue(){
      int x = 0;
      if( RadioBouton1->GetValue() ) x = 1;
      if( RadioBouton2->GetValue() ) x = 2;
      if( RadioBouton3->GetValue() ) x = 3;
      return x;
    } 

    Petit rappel sur les namespace et les classes : ils commencent par une accolade ouvrante { et finissent par une accolade fermante suivie d'un point virgule
    };
    .

    Il n'est pas utile de repréciser le namespace ou la classe si on se situe entre ces deux séparateurs.
    class MyDialog : public wxDialog
    {
    public:
      MyDialog(wxWindow* parent, wxWindowID id, const wxString& title, int nb = 0);
      int GetValue();  // vu de l'exterieur MyDialog::GetValue()
      void SetValue(int);
    private:
      wxRadioButton *RadioBouton1; // vu de l'exterieur MyDialogRadioButton1
      wxRadioButton *RadioBouton2;
      wxRadioButton *RadioBouton3;
    };

    Autre exemple
    namespace tapir{
      class plop{
         public:
         int mamie(){return 1;} //A l'interieur de la classe : mamie
         //...
      };
    
       //A l'interieur du namespace plop::mamie
    
    };
    
    //A l'exterieur tapir::plop::mamie()

    Bonne chance
    0