[C++] appeller une fonction

leowaly Messages postés 5 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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