pb de pointeurs sur fonctions en c++ - C++ - Programmation
Marsh Posté le 21-10-2003 à 21:24:36
g pas envie d'eplucher ton code
ca t'ennuies tant que ca de poster tes erreurs de compil ?
Marsh Posté le 21-10-2003 à 21:28:14
mouarf dsl mais j'avais oublié de poster les erreurs exactes encore dsl
calculette.cpp: Dans member function « void Touche::t0(int) »:
calculette.cpp:4: « essai » non déclaré (première utilisation dans cette
fonction)
calculette.cpp:4: (Chaque identificateur non déclaré est rapporté seulement
une seule fois pour la fonction dans laquelle il apparaît.)
calculette.cpp:3: AVERTISSEMENT: paramètre « int result » inutilisé
calculette.cpp: Dans constructor « Touche::Touche(QWidget*, int, const char*)
»:
calculette.cpp:27: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:28: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:29: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:30: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:31: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:32: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:33: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:34: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:35: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:36: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:37: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:38: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:39: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:40: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:41: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp:42: erreur d'analyse syntaxique avantle jeton « ) »
calculette.cpp: Dans le membre de la fonction « MyWidget::MyWidget(QWidget*,
const char*) »:
calculette.cpp:62: AVERTISSEMENT: variable inutilisée « QLabel*essai »
voila encore dsl
Marsh Posté le 21-10-2003 à 21:31:25
eurf c koi le compilo qui te crache des trucs pareils ?
enfin bon, suffitde savoir lire :
calculette.cpp: Dans member function « void Touche::t0(int) »: |
Citation : bouton[2].what_do=t2(int result); |
c'est pas du C++ ca, c'est du rien du tout
Code :
|
ca merdera aussi, mais differement
Marsh Posté le 21-10-2003 à 21:39:05
Je programme sous KDevellop et je pense ke c g++ ki compile mais j en suis pas sur et dsl pour mon code mais je debute en c++ et c pas facile j ai mi "bouton[0].what_do=t0;" mais j obtiens une nouvelle erreur :
calculette.cpp: Dans constructor « Touche::Touche(QWidget*, int, const char*)
»:
calculette.cpp:27: pas de concordance de conversion de fonction « t0 » vers
le type «void (*)(int)'
calculette.cpp:3: candidates are: void Touche::t0(int)
Si kk1 avez une idee ?
Mci Bcp
Marsh Posté le 21-10-2003 à 21:41:05
bon maintenant que ca merde differement, on peut t'expliquer ce qu'on a deja expliquer 12586 fois au cours de ce mois ci
Pointeur de fonction membre != Pointeur de fonction
Donc :
1) soit tu fais ta fonction en fonction pas membre
2) soit tu la passes en static
Marsh Posté le 21-10-2003 à 21:43:29
d accord si je comprend bien ce ke tu me dit j ai tout interet de passer ma fonction en static pour pouvoir la laisser dans la classe est ce bien ca ? et si oui c tu ou je pourrais me documenter pour le passage en static plz
mci bcp
Marsh Posté le 21-10-2003 à 21:45:21
passage en static = mettre "static" devant la declaration de ta fonction devant le .h
Marsh Posté le 21-10-2003 à 21:49:04
mci bcp ca marche nickel puis je encore de faire chier une derniere pour ke tu me dise en gros pk faut il mettre static devant la declaration ( k est ce ke cela fait il en gros plz ) ?
Marsh Posté le 21-10-2003 à 21:50:42
sephirotholsimar a écrit : |
heuh ben
Pointeur de fonction = 4octets (et convention d'appel _cdecl (generalement))
Pointeur de fonction membre = 8octets (adresse de fonction + "this" )et convention d'appel thiscall
Pointeur de fonction membre static = pointeur de fonction (par contre vu que tu n'asplus le this tu ne peux pas utiliser des vars membres non static)
Vala
Marsh Posté le 21-10-2003 à 21:54:41
mci bcp
c super gentil de m avoir expliker tout ca et desoler de t avoir deranger
mci bcp
Marsh Posté le 21-10-2003 à 21:14:08
Kikoo All
Voila je viens de me lancer dans la creation d une calculette sous Linux en C++ seulement je rencontre un gros probleme de compilation voila mes fichiers sources toutes aides est la bienvenue
fichier .cpp :
#include "calculette.h"
void Touche::t0( int result ) {
essai->setText("Machin" );
}
Touche::Touche( QWidget *parent, int nb, const char *name )
: QVBox( parent, name )
{
bouton[0].aff='7';
bouton[1].aff='8';
bouton[2].aff='9';
bouton[3].aff='+';
bouton[4].aff='4';
bouton[5].aff='5';
bouton[6].aff='6';
bouton[7].aff='-';
bouton[8].aff='1';
bouton[9].aff='2';
bouton[10].aff='3';
bouton[11].aff='*';
bouton[12].aff='.';
bouton[13].aff='0';
bouton[14].aff='=';
bouton[15].aff='/';
bouton[0].what_do=Touche::t0(int nb);<==== Erreur a la compil
bouton[1].what_do=Touche::t1(int);<==== Erreur a la compil
bouton[2].what_do=t2(int result);<==== Erreur a la compil
bouton[3].what_do=t3(int result);<==== Erreur a la compil
bouton[4].what_do=t4(int result);<==== Erreur a la compil
bouton[5].what_do=t5(int result);<==== Erreur a la compil
bouton[6].what_do=t6(int result);<==== Erreur a la compil
bouton[7].what_do=t7(int result);<==== Erreur a la compil
bouton[8].what_do=t8(int result);<==== Erreur a la compil
bouton[9].what_do=t9(int result);<==== Erreur a la compil
bouton[10].what_do=t10(int result);<==== Erreur a la compil
bouton[11].what_do=t11(int result);<==== Erreur a la compil
bouton[12].what_do=t12(int result);<==== Erreur a la compil
bouton[13].what_do=t13(int result);<==== Erreur a la compil
bouton[14].what_do=t14(int result);<==== Erreur a la compil
bouton[15].what_do=t15(int result);<==== Erreur a la compil
result[0]=bouton[nb].aff;
result[1]='\0';
bouton[nb].touche = new QPushButton( result, this, "touche" );
connect( bouton[nb].touche, SIGNAL(clicked()), qApp, SLOT(bouton[nb].(*what_do)));
}
fichier .h :
class Touche : public QVBox
{
public:
struct boutons {
char aff;
QPushButton *touche;
void (*what_do)( int );
};
struct boutons bouton[16];
char result[2];
Touche( QWidget *parent=0, int nb=0, const char *name=0 );
void t0( int );
void t1( int );
void t2( int );
void t3( int );
void t4( int );
void t5( int );
void t6( int );
void t7( int );
void t8( int );
void t9( int );
void t10( int );
void t11( int );
void t12( int );
void t13( int );
void t14( int );
void t15( int );
};
J'espère ke cela est suffisant sinon n hésitez pas a me demander
Mci bcp