Je d=E9veloppe un logiciel disposant d'un GUI. Pour cela j'ai une
fenetre (Form) qui poss=E8de un panel, lequel change selon les actions
de l'utilisateur.
Je souhaite pouvoir acc=E9der =E0 des fonctions du Panel depuis mon Form.
J'ai d=E9fini une classe HMIPanel, qui h=E9rite de panel et qui contient
3 fonctions nextState,previousState et getState.
namespace HMI {
{
using namespace System;
HMIPanel::HMIPanel(void) {this->Name =3D "myPanel";}
System::Void HMIPanel::nextState(void) {}
System::Void HMIPanel::previousState(void) {}
System::Int64 HMIPanel::getState(void) { return 0; }
}
}
J'ai ensuite d=E9fini 2 classes h=E9ritant de HMIPanel, Menu et List qui
sont tout =E0 fait diff=E9rentes dans leurs affichages. Je ne donnerai
que le .h, le .cpp ne me semble pas utile.
namespace HMI {[indent]
public ref class Menu : public HMI:HMIPanel
{
public :int sizeH;
int sizeV;
int state;
System::Windows::Forms::Label^ label1;
System::Windows::Forms::Label^ label1;
System::Windows::Forms::PictureBox^ pic1;
System::Windows::Forms::PictureBox^ pic2;
System::String^ title1;
System::String^ title2;
public :
virtual System::Void nextState(void);
virtual System::Void previousState(void);
virtual System::Int64 getState(void);
public :
Menu(System::String^ _label1,System::String^ _label2,System::String^
_pic1,System::String^ _pic2,System::String^ _title1,System::String^
_title2);};
}
-----
List.h
-----
#include "List.h"
namespace HMI {
public ref class List : public HMI::HMIPanel {
protected:
int sizeH;
int sizeV;
int state;
System::String^ title;
array<System::String^> choice;
public :virtual System::Void nextState(void);
virtual System::Void previousState(void);
virtual System::Int64 getState(void);
public :
List(System::String^ _title,array<System::String^> _choice);
};
}
J'espere que tout le monde a suivi jusque la .
dans mon Form.h, j ai un attribut de type HMIPanel tel que suit :
Code :
HMI::HMIPanel^ panel1;Lors de l'initialisation je fais comme suit :
Code :
HMI::Menu^ myMenu =3D gcnew HMI::Menu(...........);
this->panel1 =3D myMenu ;
Dans la suite du programme j'appelle la fonction nextState(), qui
incr=E9mente l'=E9tat de 1 et l'affiche =E0 l'=E9cran pour v=E9rifier que ca
marche bien cela donne :
Console::WriteLine(myMenu->getState) affiche "1"
Console::Writeline(this->panel1->getState) affiche "0"
De plus, lors du lancement du GUI, la fenetre s'affiche normalement
comme si c etait bien un Menu, par contre les m=E9thodes
nextState,previousState et getState sont celles de HMIPanel et non
celles de Menu. J'ai l'impression que mon attribut panel1, ne fait pas
l"overriding" des m=E9thodes...
En clair, ca appelle les fonction de HMIPanel.h et pas celle de Menu.h.
En parcourant le site developpez.com je suis tomb=E9 sur cet article :
http://c.developpez.com/faq/cpp/?page=3Dvirtual#DEFINITION_virtual
N=E9ammoins il semble que sous VS 2005, ces manipulations ne soient pas
possible, lorsque j'utilise * on me dit qu il faut utiliser le ^ , bref
je ne sais pas ce que je dois faire pour faire une bonne copie
polymorphique.
D=E9sol=E9 pour le message un peu long, merci d'avance =E0 ceux qui le
liront et pourront m'aider
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabien LE LEZ
On 8 Jun 2006 01:06:32 -0700, :
Subject: Polymorphisque avec les types managés
J'imagine que tu parles là de C++/CLI, qui me semble un langage assez différent du C++. AMHA, tu trouveras plus facilement des spécialistes de ce langage sur un forum microsoft.public.*, ou, à défaut, sur fr.comp.os.ms-windows.programmation.
On 8 Jun 2006 01:06:32 -0700, Christophe.Azemar@gmail.com:
Subject: Polymorphisque avec les types managés
J'imagine que tu parles là de C++/CLI, qui me semble un langage assez
différent du C++. AMHA, tu trouveras plus facilement des spécialistes
de ce langage sur un forum microsoft.public.*, ou, à défaut, sur
fr.comp.os.ms-windows.programmation.
J'imagine que tu parles là de C++/CLI, qui me semble un langage assez différent du C++. AMHA, tu trouveras plus facilement des spécialistes de ce langage sur un forum microsoft.public.*, ou, à défaut, sur fr.comp.os.ms-windows.programmation.
Christophe.Azemar
On 8 Jun 2006 01:06:32 -0700, :
Subject: Polymorphisque avec les types managés
J'imagine que tu parles là de C++/CLI, qui me semble un langage assez différent du C++. AMHA, tu trouveras plus facilement des spécialistes de ce langage sur un forum microsoft.public.*, ou, à défaut, sur fr.comp.os.ms-windows.programmation.
Oui C++/CLI, je vais aller sur ces groupes la alors merci.
On 8 Jun 2006 01:06:32 -0700, Christophe.Azemar@gmail.com:
Subject: Polymorphisque avec les types managés
J'imagine que tu parles là de C++/CLI, qui me semble un langage assez
différent du C++. AMHA, tu trouveras plus facilement des spécialistes
de ce langage sur un forum microsoft.public.*, ou, à défaut, sur
fr.comp.os.ms-windows.programmation.
Oui C++/CLI, je vais aller sur ces groupes la alors merci.
J'imagine que tu parles là de C++/CLI, qui me semble un langage assez différent du C++. AMHA, tu trouveras plus facilement des spécialistes de ce langage sur un forum microsoft.public.*, ou, à défaut, sur fr.comp.os.ms-windows.programmation.
Oui C++/CLI, je vais aller sur ces groupes la alors merci.