[C++] appeller une fonction

Fermé
leowaly Messages postés 5 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 27 janvier 2007 - 19 oct. 2006 à 14:49
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 20 oct. 2006 à 15:48
Bonjour,
je suis un novice ds le C++ objet et j'ai qq soucis avec un code de calcul qui fait de la mecanique des fluides;
voila mon pb: ds le fichier NavierStokesSolverPC.hpp je veux afficher la coordonnee Z de chaque noeuds, ces coordonnees sont introduites ds quadrature.hpp et donc j'ai introduit une ligne (line 271) ds NavierStokesSolverPC.hpp:
std::cout << " coord = " << this->pt._coor[ 0 ] << "," << this->pt._coor[ 1 ] << "," << this->pt._coor[ 2 ] << std::endl;

mais ca ne marche pas, et je ne sais pas du tt pourquoi ca ne marche pas?
je sais que c les variables déclarées ds Publics qui sont accessebless par tte la hierarchie mais je me perds ds tt cas
merci bcp bcp pr votre aide

NavierStokesSolverPC.hpp : https://www.cjoint.com/?ktoUOztHqp
quadrature.hpp : https://www.cjoint.com/?ktoWej5CLR
quadrature.cpp : https://www.cjoint.com/?ktoWCqSoTH

merci a vous

1 réponse

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
20 oct. 2006 à 15:48
Rappels de C++

this n'a de sens qu'à l'intérieur d'une structure :
struct plop{
  //...
}
ou d'une classe
class plop{
  //...
;}

ou d'une méthode rattachée à une classe :
void plop::f(){
  //...
}

D'ailleurs *this peut être sous-entendu dans chacun de ces cas :
class a{
  protected:

  int x; // un attribut de a

  public:

  //le constructeur de a
  a(int x0=0):x(x0);

  //un accesseur sur l'attribut x::a
  void set_x(int x0){
    this->x = x0;
    x = x0; //equivalent à la ligne précédente
  }
};


Le problème dans ton code

Là, this fait référence à la classe NavierStockes qui n'a pas d'attribut _coor, tu ne peux utiliser ce champ que sur une instance de classe QuadPoint.

Exemple
QuadPoint q;
qstd::cout << q._coor[0] << std::endl;

En l'occurence this->pt ne fait pas référence dans la classe NavierStockes à un attribut pt de type QuadPoint.

Bonne chance
0