begin process at 2012 05 29 14:08:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

Problème classe et main : argument does not match


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème classe et main : argument does not match

lundi 13 juillet 2009 à 14:49:04 | Problème classe et main : argument does not match

RS8

Bonjour,

je fais actuellement de 'lOpenGL.
Je voudrais avoir deux fichiers : drawing.cpp et main.cpp

Dans le main.cpp il n'y a que le main et dans drawing.cpp il y a toutes les fonctions nécessaires à l'affichage en OpenGL (init(), display(), reshape(), ...)

Je crée un objet drawing dans le main et j'appelle mes fonctions initt(), display(), ...

Mais le problème est que lorsque dans le main je fais GlutDisplayFunc(display) et GlutReshapeFunc(reshape) j'ai le message d'erreur suivant :
erreur : argument of type 'void (Drawing::) (int, int)' does not match 'void (*) 'int, int)' et apreil pour le glutReshapeFunc.R

Que dois-je changer pour que cela fonctionne ?

Je joins le drawing.h ainsi que le main :

Fichier drawing.h :

class Drawing {
    public:
       Drawing(int a, int b);
       void init();
       void reshape(int w, int h);
       void display();
};


Fichier main:

int main() {
     Drawing d(3, 3);
     d.init();
     glutDisplayFunc(d.display);
     glutReshapeFunc(d.reshape);
     glutMainLoop();
     return 0;
}


Merci.
lundi 13 juillet 2009 à 15:49:36 | Re : Problème classe et main : argument does not match

Lucky92

Salut,

On ne peut pas utiliser des méthodes d'objets comme pointeurs de fonction.
Il faut utiliser soit des méthodes de classe ( méthodes statiques ), soit des foncteurs ( objet-fonctions ).

lundi 13 juillet 2009 à 16:13:53 | Re : Problème classe et main : argument does not match

RS8

Ok mais le problème c'est que dans display j'appelle d'autres méthodes et celles-ci ne peuvent pas être statiques ! Donc je ne peux pas mettre display en statique.

Et avec les foncteurs ça donnerait quoi en gros ?

Merci.


lundi 13 juillet 2009 à 18:39:58 | Re : Problème classe et main : argument does not match

juju12

tu peux créer une fonction display statique qui appellera la fonction display de l'objet, mais il faudra stocker quelque part l'identité de l'instance de classe avec laquelle on travaille. Par exemple :

class Drawing
{
protected:
   static Drawing* pCurrentObject;
   void display();
public:
   static void com_display()  {pCurrentObject->display();}
   void SetCurrentObject(Drawing*pObject) {pCurrentObject=pObject;}
};

int main(void)
{
   Drawing D(3,3);
   Drawing::SetCurrentObject(&D);
   glutDisplayFunc(D::com_display);
   // ...
}

tu peux éventuellement appeler SetCurrentObject() dans le constructeur même de Drawing pour ne pas avoir à le faire dans le code, sauf en cas de changement d'objet.
lundi 13 juillet 2009 à 18:45:07 | Re : Problème classe et main : argument does not match

RS8

Ok merci, je vais essayer ça!
mercredi 15 juillet 2009 à 15:14:10 | Re : Problème classe et main : argument does not match

RS8

Merci beaucoup ça marche.

J'ai juste du rajouter quelques lignes mais l'idée était là. :)

mercredi 15 juillet 2009 à 15:19:30 | Re : Problème classe et main : argument does not match

RS8

Merci beaucoup ça marche.

J'ai juste du rajouter quelques lignes mais l'idée était là. :)



Cette discussion est classée dans : int, void, display, main, drawing


Répondre à ce message

Sujets en rapport avec ce message

important [ par cmoapierre ] File1.h:class Addition100 { private : int Valeur ; public : void EcrireNombre(int prmN) ; void Additionner100(void) ; int LireNombre(voi Variables globales [ par nisaloncaje ] Bonjour, je suis en train de créer un petit programme en c (j'utilise devc++) et j'ai un problème : je n'y comprends rien au variables globales !En ef parametre de la fonction main() [ par infodaoudi ] bonjour,dans le programme qui suit : comment executer la fonction main() sachant que j'utilise le vc++ 6.0 (console). autrement dit, comment faire pou parcours en profondeur dans un graphe [ par Tavarez59282 ] Bonjour j'ai un sujet de tp à realiser sur les graphes à l'aide de listes d'adjacence et j'ai un incident de segmentation dans mon code lorsque j'exec jeux d'échec qui nous met en échec!! [ par shinohinata01 ] Bonjour,nous rencontrons actuellement un problème sur un de nos programmes qui traite d'un jeux d'échec.en gros nous avons une fonction dans une class !!! Position du curseur !!! [ par yoyo269 ] Bonjour à toutes et à tous !Je cherche un moyen (en mode console sous Linux) de pouvoir placer le curseur là où je le voudrais.J'ai essayé avec ce cod error C2143 [ par IH2MCBETA ] 1>c:\users\richard\documents\visual studio 2005\ih2mc\parameters.h(15) : error C2143: erreur de syntaxe : absence de ';' avant '*'1>c:\users\richard\d Un tableau statique dans une méthode: c'est mal? [ par harddisk ] Bonjour,j'ai une méthode qui retourne un int (code ci-dessous):chercher une couleur dans une main de cartes, une main comprenant en membre un tableau Dessiner un pixel sur le bureau [ par debutant VB ] Bonjour tout le monde.Je débute en C++, et j'ai un petit problème :J'ai fait un petit programme qui devrai dessiner un point rouge sur le bureaumais ç glutTimerFunc [ par iam_myst ] Bonjour a tous Je souhaite utiliser la fonction glutTimerFunc sur une méthode de classe : void Maclasse::dessiner(int a) {       blablabla... } Void M


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales