Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1093 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  pointeur sur function dans le class

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pointeur sur function dans le class

n°1908898
ciaonataha
Posté le 27-07-2009 à 13:06:10  profilanswer
 

il y  class
 
 
class phase
{
public:
  phase();
  interface *frontiere;
}
 
class interface
{
public:
interface();
interface (phase *, phase *);
void binaire(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration);
void Jacobian_binaire(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(*nrfunc)(int, std::vector <double> &Y, std::vector <doubl//e> &F, std::vector <double> &concentration));
}
 
//J`appele cette function
void::interface::Jacobian_binaire(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(*nrfunc)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration))
{
 (*nrfunc)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration);
}
 
//class newt
class newt
{
public:
interface *func;
interface *jacobian;
void (interface::*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration);
void (interface::*jacobfunc(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration));
void calc(std::vector <double> &x, int *check, std::vector <double> &concentration);
}
 
void newt::calc(td::vector <double> &x, int *check, std::vector <double> &concentration)
{
 (jacobian->*jacobfunc)(x,fvec1,J,concentration, func->*nrfuncv);
}
 
 
//Dans le main.cpp
int main()
{
newt nt;
 
int i=1;
   while(mat.produit[i])
    {
       nt.func = mat.produit[1]->frontiere[1];
       nt.funcv=&interface::binaire;
       nt.jacobian= mat.produit[1]->frontiere;
       nt.jacobfunc = &interface::Jacobian_binaire;    
}
 
}
Les errore:
 
connot convert void(interface::*)(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration)) to
void(interface::*)(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(interface::*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration))
 
J`ai vraimenent besoin d`aide.
 
 
 
 
 
 
//Dans le main.cpp
 
int main()
{
 
 
 
}
 
 
 

mood
Publicité
Posté le 27-07-2009 à 13:06:10  profilanswer
 

n°1908912
Taz
bisounours-codeur
Posté le 27-07-2009 à 13:31:35  profilanswer
 

Tu peux pas mélanger pointeurs de fonctions et pointeurs de fonctions membres: tu dois passer par une abstration genre bind, mem_fun, voire la bibliothèque externe boost.
 
Y a plein de sujets et d'exemple sur le forum.

n°1908918
ciaonataha
Posté le 27-07-2009 à 13:38:29  profilanswer
 

Merci je vais voir

n°1908921
Taz
bisounours-codeur
Posté le 27-07-2009 à 13:42:36  profilanswer
 

Et des petits typedef n'ont jamais tué personne.

n°1908922
Taz
bisounours-codeur
Posté le 27-07-2009 à 13:44:24  profilanswer
 

Code :
  1. void(interface::*)(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration))
  2. void(interface::*)(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration, void(interface::*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration))

n°1908924
Taz
bisounours-codeur
Posté le 27-07-2009 à 13:45:28  profilanswer
 

En fait c'est juste la signature de ta Jacobian_binaire qui n'est pas conforme à ce que tu veux en faire.

n°1909105
Joel F
Real men use unique_ptr
Posté le 27-07-2009 à 18:01:01  profilanswer
 

boost::function quoi v_v

n°1909273
ciaonataha
Posté le 28-07-2009 à 10:25:24  profilanswer
 

Je faisait d`autre choise:
 
class interface
{
  public:
  interface *func;
  void(interface::*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration);
  void binaire(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration);
  void Jacobian_binaire(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration);
  interface()
  {
    func=NULL;
  }
}
 
void interface::Jacobian_binaire(std::vector <double> &Y, std::vector <double> &F, std::vector <std::vector <double> > &Jacobian2D, std::vector <double> &concentration)
{
(func->*nrfunc)(n,Y,F,concentration);
}
 
dans main.cpp
 
interface in;
 
int i = 1;
while (mat.produit[i]!=0)
{
 in.func=mat.produit[1]->frontiere[1];
 in.nrfunc=interface::binaire;
 
}
 
ca me donne "Segmentation fault"


Message édité par ciaonataha le 28-07-2009 à 10:40:18
n°1909282
ciaonataha
Posté le 28-07-2009 à 10:32:11  profilanswer
 

C'est important pour mes fonctions que cette fonction s'herites de la classe interface
 
void(interface::*nrfuncv)(int, std::vector <double> &Y, std::vector <double> &F, std::vector <double> &concentration);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  pointeur sur function dans le class

 

Sujets relatifs
Ereur : Could not find the main class[VBA] Erreur 1004 AutoFiltre method of Range class failed
cast sur un pointeur de fonctionmessage d'erreur "can not access a member of class X"
[C/C++] Difference entre pointeur et double pointeur ?C++ pointeur, constructeur, attributs
[Résolu] execution de jar : Failed to load Main-Class[Résolu]Probleme avec des pointeur de structure
class Exception de php[c++ vs java] pointeur de fonction
Plus de sujets relatifs à : pointeur sur function dans le class


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR