C'est la dernière aide que je demande après je vous casse plus les pieds ^^
Vous ne cassez les pieds à personne : chacun est libre de répondre ou pas ! ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Je pense que votre problème vient des notions qui tournent autour des passages de paramètres par valeur ou bien par référence.
En c++, trois façons de faire (sans aller chercher midi à 14h, car il peut y avoir des 'astuces' plus compliquées mais ça n'est pas le sujet) :
Note : je peux me tromper un peu car ça fait longtemps que je ne fais plus de c++. Mais les principes généraux sont là.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
1/ Passage par valeur
Déclaration :
void fonction( Form form );
Appel :
Form x;
fonction( x );
2/ Passage par référence
Déclaration :
void fonction( Form &form );
Appel :
Form x;
fonction( x );
3/ Passage par adresse (pointeur)
Déclaration :
void fonction( Form *form );
Appel :
Form x;
fonction( &x ); |
Cas 1/
Lors de l'appel une copie de la forme est transmise à la fonction. Cet appel nécessite que Form ait un constructeur de copie : Form( Form &form).
Normalement, ça n'est pas le cas d'une Form (à vérifier, mais de toute façon ça n'est pas la bonne solution ici).
Cas 2/
Lors de l'appel c'est en fait la forme de la fonction appelante qui est transmise à la fonction appelée sans copie ni rien (c'est un peu comme pour le passage par adresse au final, mais c'est dans l'esprit des 'var' ou 'ref' qu'on trouve dans d'autres langages).
Cas 3/
On passe l'adresse de la forme (l'adresse est en fait passée par valeur) et du coup, à l'intérieur de la fonction appelée on accède à la forme d'origine depuis son adresse
Pour votre problème :
- On doit partir de la forme où l'utilisateur saisit les valeurs et traiter une événement sur cette forme (appui sur un bouton)
- Depuis l'événement qui est une méthode de la forme (en général), la forme s'appelle 'this' qui est de type 'Form *'
- Votre fonction 'Limites' peut donc avoir comme signature :
int *Limites( Form *pForm );
Auquel cas, vous l'appellez par : ou
int *Limites( Form &form );
Et vous l'appelez par : Je préconise cette dernière solution (avec 'Form &form') car il vaut mieux utiliser les pointeurs seulement là où c'est vraiment utile.
En espérant que ça vous aide.
bon courage
Partager