fonctions imbriquées en C++
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

fonctions imbriquées en C++



  1. #1
    klark

    fonctions imbriquées en C++


    ------

    Bonjour,

    Je souhaite définir des fonctions imbriquées en C++ pour éviter la déclaration de variables globales. J'ai trouvé sur un site internet qu'il est possible de faire ceci en passant par une classe (http://www.gotw.ca/gotw/058.htm). Donc j'ai essayé d'adapter le méthode proposée mais j'ai échouer. Serait-il possible de m'aider s'il vous plaît ? L'objectif final est de passer d'une fonction à plusieurs arguments à une fonction de type double (double, double). A l'aide s'il vous plaît.

    Voici le code :
    Code:
    #include <cstdlib>
    #include <iostream>
    #include <cmath>
    #include <complex>
    
    /*
    ....
    */
    
    
    
    class Myclass 
    {
        double (*retval)(double, double);
        double A;
        double x0, y0, z0, z, a, b,k;
        int mu, nu, s, t;
        
        double g(double x, double y)
        {
            return (x0+y0+z0+a+b+k+s+t+mu+nu)*A*x*y;
        }
    public :
        Myclass(complex<double> A, double x0, double y0, double z0, double k, double a, double b,  int mu, int nu, int s, int t) : z(0.)
        {
            this->A=A;
            this->x0=x0;
            this->y0=y0;
            this->z0=z0;
            this->k=k;
            this->a=a;
            this->b=b;
            this->mu=mu;
            this->nu=nu;
            this->s=s;
            this->t=t;
            retval=g;
        }
        operator double (double, double)
        {
            return retval;
        }
    };
    
    int main ()
    {
        /*
        ......
       */
        return 0;
    }
    Les erreurs que j'obtiens quand je compile sont :

    g++ -c -g -MMD -MP -MF "build/Debug/GNU-Linux-x86/main.o.d" -o build/Debug/GNU-Linux-x86/main.o main.cpp
    main.cpp:114:36: error: ‘Myclass:perator double(double, double)’ must take ‘void’
    operator double (double, double)
    ^
    main.cpp: In constructor ‘Myclass::My_class(std::comple x<double>, double, double, double, double, double, double, int, int, int, int)’:
    main.cpp:112:15: error: cannot convert ‘Myclass::g’ from type ‘double (champ_speculaire_class:(double, double)’ to type ‘double (*)(double, double)’
    retval=g;
    ^

    -----
    Dernière modification par Jack ; 01/10/2015 à 15h55. Motif: Ajout balises code

  2. #2
    Bluedeep

    Re : fonctions imbriquées en C++

    Bonjour,

    Citation Envoyé par klark Voir le message

    Je souhaite définir des fonctions imbriquées en C++ pour éviter la déclaration de variables globales.
    En POO, on ne voit pas trop bien l'interêt d'utiliser cette verrue du langage, qui aboutit à un code difficilement lisible.
    Revoir plutôt le design : il suffit d'accèder en lieu et place à des membres de la classe où la fonction est définie.

Discussions similaires

  1. Limite des sommes imbriquées
    Par lahmed dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 27/11/2014, 23h06
  2. Formules matricielles imbriquées (Excel ou Calc)
    Par philou21 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/09/2012, 13h16
  3. Excel 2002 : formule de calcul (conditions imbriquées)
    Par invitee518b267 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/05/2012, 14h41
  4. suites imbriquées adjacentes
    Par snemed dans le forum Mathématiques du collège et du lycée
    Réponses: 6
    Dernier message: 13/01/2010, 11h25