capigloo1->
Effectivement je me suis remis au c++ il y a pas tres longtemps, mais bon la j'ai p-e trop simplifié mes classes, car en realité j'utilise pas mal le polymorphisme, mais dans mon cas (je crois) ca ne peut pas m'aider.
Taz->
Je fréquente hfr depuis suffisament longtemps pour connaitre les regles, et quand j'ai fait mes recherche je suis pas tombé dessus , y'a une masse de topic ou les pointeur apparaissent et le moteur de recherche ne permet plus de specifier de date de recherche. Enfin Bref je me suis p-e aussi mal expliqué sur ce que je voulais (désolé), car pour moi ton exemple ne resoud pas mon problème.
je vais tenter de reprendre tout ca:
J'ai:
- une classe "Ecran Globale" qui me permet d'ouvrir, de fermer des fenetres et d'envoyer un evenement a la fenetre active. (les fenetre sont crées dynamiquement, ce ne sont pas des objets statiques!)
- une classe "objet de base" qui definit en virtuel toute les fonctions des objets
- En dérive: une classe "touche"
- En derive: une classe "fenetre"
- en derive une classe "fenetre util 1","fenetre util 2"... qui peut contenir plusieurs objets touche
le but de mon systeme est de garder les classe "ecran" et "fenetre" en fixe et n'avoir qu'a rejouter des fenetres util.
Lors d'un evenement, l'objet ecran appelle la fonction correspondante de la fenetre util en cours via une fonction de base de la classe fenetre. Cette fonction parcourt la liste des objets de base la fenetre util et appelle la fonction virtuelle d'appui de touche de l'objet concerné. Jusque la pas de problème tout marche bien.
Le probleme est que vu que j'ai pas envie d'avoir a rederiver chaque objet touche pour avoir des actions différente, j'utilise la classe directement dans la fenetre util, mais je veux qu'en plus de la fonction de base d'appui touche il m'en execute une autre définie dans la "fenetre util" qui la contient.
Pour ce faire j'avais pensé a mettre dans ma classe de base des pointeur vers des fonction qui seraient affecté lors du constructeur de la fenetre utilisateur.
Le probleme est que si j'ai des modifications a faire sur des autres objets de la fenetre il faut que ce pointeur pointe sur une fonction membre et c'est la que ca passe pas...
Citation :
// ma classe de base dont derive tout mes objets
classe ObjBase
{
virtual void OnEvent(); // la fonction d'evenement
void* UserFonction() ; // le pointeur vers une fonction utilisateur quelconque
}
// l'objet fenetre de base
class Objfenetre : ObjBase
{
ObjList Items; //contient des pointeurs vers des ObjBase
void OnEvent() //la fonction d'evenement
{
//... //parcourt des objets
Items.OnEvent(); // appel a la fonction virtuelle de l'objet de base
}
}
// la fenetre crée par l'utilisateur
class FenetreUser : Objfenetre
{
ObjTouche Touche1; //la touche qu'il contient
void AppuiTouche(); //fonction utilisateur lancé lors de l'appui touche
FenetreUser() //contructeur
{
Touche1.UserFonction=AppuiTouche; //affectation de la fonction, c'est la que ca bloque
}
}
class ObjTouche : ObjBase {
void OnEvent() //la fonction d'evenement
{
if (UserFonction!=NULL) // si la fonction utilisateur existe...
UserFonction();
} }
|
voila j'espère que mon problème est plus clair