[C++] Problème int

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. Modérateur
    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
    1. Contributeur
      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.
      1. B j'ai essayé mais rien à faire, cela ne fonctionne toujours pas...
        1. Contributeur
          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.
          1. 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+
            1. 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;
              }
              }
              1. peut on voir les prototypes des méthodes :
                OnSelectionner_les_zones_a_analyser() ?
                GetValue() ?