C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Polymorphisque avec les types managés

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Guest






PostPosted: Thu Jun 08, 2006 9:11 am    Post subject: Polymorphisque avec les types managés Reply with quote



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






PostPosted: Thu Jun 08, 2006 9:11 am    Post subject: Re: Polymorphisque avec les types managés Reply with quote



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





PostPosted: Thu Jun 08, 2006 9:11 am    Post subject: Re: Polymorphisque avec les types managés Reply with quote



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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.