IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Typedef struct et Methode en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut Typedef struct et Methode en C++
    Bonjour,

    je viens de découvrir ce forum ou j’espère trouver de l' aide par rapport à mon problème. En effet, j'ai construit deux structures AmercanPut et Modele que j' essais d' utiliser dans une méthode Ame_PutPrice () que est définie comme suite:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    typedef struct   {
    	 Date ContractDate ; // t
    	 Date MaturityDate ;// T
    	 Amount StrikePrice ;// K
    	}AmericanPut;
     
     typedef struct  {
    	double r;
    	double sigma;
    	double S;
    	}Modele;
     
     
    double Option::Ame_PutPrice_BS(long t, double S, AmericanPut option, Modele modele)const {.............}
    Message d' erreur:
    error C2511: 'double option::Ame_PutPrice_BS(long,double,AmericanPut,Modele) const' : overloaded member function not found in 'Option'
    merci d'avance pour votre aide!

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour et bienvenu,
    Il manque la définition de la classe Option pour répondre correctement à ton problème.
    Généralement, ce genre d'erreur vient d'une divergence entre la définition de ta méthode et sa déclaration.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Merci pour le bienvenu et aussi d'avoir répondu aussi vite!

    les deux structures typedef AmericanPut et Modele, je l'ai déclarés sur la partie code.cpp avant la fonction main. En résume mon problème est de ne pas savoir manipuler les structures de typedef en tant qu'agruments d' une méthode d' une classe.

    voici le code de ma class:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #ifndef _WIN32_WINNT		
    #define _WIN32_WINNT 0x0501	
    #endif						
     
    #include <stdio.h>
    #include <tchar.h>
    #include <string>
     
     
    using namespace std ;
     
     
     
    class Option  
    {
    private:
     
    	void init();	// Initialise all default values
    	void copy(const Option& o2);
     
    	// 'Kernel' functions for option calculations
    	double Euro_CallPrice() const;
    	double Euro_PutPrice() const;
     
    	double Ame_CallPrice() const;// Black_Scholls
    	double Ame_PutPrice_BS() const  ;//c ' est la fonction qui cree les probléme !!!!!!!!!!!
     
     
     
     
    public:
    	// Public member data for convenience only
    	double r;		// Interest rate
    	double sig;		// Volatility
    	double K;		// Strike price
    	double T;		// Expiry date
    	double S;		// Current underlying price 
     
    	string optType;	// Option name (call, put)
     
     
    public:	
    // Constructors
    Option();	 // Default call option
    Option(const Option& option2);	// Copy constructor
    Option (const string& optionType);	// Create option type
     
    // Destructor
    virtual ~Option();	
     
    // Assignment operator
    Option& operator = (const Option& option2);
     
    // Functions that calculate option price 
    double Black_Schol_Price() const;
    double eva_Price() const;
     
     
    // Modifier functions
    void toggle();		// Change option type (C/P, P/C)
     
    };
    merci!

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Il faut que la déclaration dans le .h correspondent strictement à la définition dans le .cpp. Donc, dans ta déclaration, tu dois spécifier tous les paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    class Option  
    {
    private:
    // definition des structures:
    // dans ce cas, le typedef n'est pas nécessaire en C++:
    struct   AmericanPut{
    	 Date ContractDate ; // t
    	 Date MaturityDate ;// T
    	 Amount StrikePrice ;// K
    	}AmericanPut;
     
    struct  Modele{
    	double r;
    	double sigma;
    	double S;
    	};
    private:
    ...	
    	double Ame_PutPrice_BS(long t, double S, AmericanPut option, Modele modele) const  ;//c ' est la fonction qui cree les probléme !!!!!!!!!!!
    ...
    };
    P.S.: Black&Scholls, ça me rappelle mes années d'étudiant Un projet d'école?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Merci 3DArchi!! ça a marché même si j'ai encore une liste d’erreurs à résoudre .
    En effet je suis en train d’implanter une méthode numérique pour approximer une Option américain pour comparer le résultat avec d' autres méthodes plus au moins connues.

    merci encore

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Par défaut
    Encore une question concernant les structure:

    j'ai envi de définir 2 autre strucure l' une de type double et l 'autre de type long:

    version 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    struct double Date;
    struct long Amount;
    version 2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct Date {
    double i;
    };
    struct Amount {
    long j;
    };
    pourquoi le compiler n'accepte pas la 1 version et la douxieme est accepté mais je ne sais pas si elle bonne!!!

    merci d'avance!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de typedef struct
    Par matdakillah dans le forum Linux
    Réponses: 19
    Dernier message: 01/08/2008, 16h54
  2. struct / typedef struct
    Par darkwall_37 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/06/2008, 16h43
  3. Questions sur Typedef Struct
    Par pinto_armindo dans le forum C
    Réponses: 6
    Dernier message: 26/11/2007, 20h22
  4. typedef struct
    Par moon93 dans le forum C
    Réponses: 3
    Dernier message: 10/05/2006, 11h22
  5. Réponses: 6
    Dernier message: 31/08/2005, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo