 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Guest
|
Posted: Thu Jun 08, 2006 9:11 am Post subject: Polymorphisque avec les types managés |
|
|
Bonjour à tous,
voici mon problème auquel j'espère vous pourrez me répondre.
Je développe un logiciel disposant d'un GUI. Pour cela j'ai une
fenetre (Form) qui possède un panel, lequel change selon les actions
de l'utilisateur.
Je souhaite pouvoir accéder à des fonctions du Panel depuis mon Form.
J'ai défini une classe HMIPanel, qui hérite de panel et qui contient
3 fonctions nextState,previousState et getState.
Code :
-----------
HMIPanel.h
-----------
namespace HMI {public ref class HMIPanel : public
System::Windows::Forms::Panel
{
public:
virtual System::Void nextState(void);
virtual System::Void previousState(void);
virtual System::Int64 getState(void);
public:
HMIPanel(void);
};
}
-------------
HMIPanel.cpp
-------------
#include "stdafx.h"
#include "HMIPanel.h"
namespace HMI {
{
using namespace System;
HMIPanel::HMIPanel(void) {this->Name = "myPanel";}
System::Void HMIPanel::nextState(void) {}
System::Void HMIPanel::previousState(void) {}
System::Int64 HMIPanel::getState(void) { return 0; }
}
}
J'ai ensuite défini 2 classes héritant de HMIPanel, Menu et List qui
sont tout à fait différentes dans leurs affichages. Je ne donnerai
que le .h, le .cpp ne me semble pas utile.
Code :
-------
Menu.h
-------
#include "HMIPanel.h"
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 = gcnew HMI::Menu(...........);
this->panel1 = myMenu ;
Dans la suite du programme j'appelle la fonction nextState(), qui
incrémente l'état de 1 et l'affiche à l'écran pour vérifier 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éthodes
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éthodes...
En clair, ca appelle les fonction de HMIPanel.h et pas celle de Menu.h.
En parcourant le site developpez.com je suis tombé sur cet article :
http://c.developpez.com/faq/cpp/?page=virtual#DEFINITION_virtual
Néammoins 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ésolé pour le message un peu long, merci d'avance à ceux qui le
liront et pourront m'aider |
|
| Back to top |
|
 |
Guest
|
Posted: Thu Jun 08, 2006 9:11 am Post subject: Re: Polymorphisque avec les types managés |
|
|
Fabien LE LEZ a écrit :
| Quote: | On 8 Jun 2006 01:06:32 -0700, Christophe.Azemar (AT) gmail (DOT) 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. |
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Thu Jun 08, 2006 9:11 am Post subject: Re: Polymorphisque avec les types managés |
|
|
On 8 Jun 2006 01:06:32 -0700, Christophe.Azemar (AT) gmail (DOT) com:
| Quote: | 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. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|