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 :

pb avec pointeur


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 91
    Par défaut pb avec pointeur
    Bonjour,

    J'ai l'erreur suivante

    J'appelle une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    fonction f()
    {
    	Bond->disc_yc=(CYieldCurve*)yc;	
    	s_Bond = Bond;f = ++s_nbBond;			
    	conv.DoubleToVariant(&f,&val); 
    }
    ou disc_yc est un pointeur sur CYieldCurve et s_bond un static CYieldCurve *

    Lors de l'utilisation d'une fonction g j'utilise mon static bond initialisé précedemment mais dans celle-ci mon Bond->disc_yc est vide
    tout a disparu dans Bond->disc_yc mais mes autres membres de Bond sont présent (double, string...)

    Quelqu'un a t il une idée?

    Je vous remercie.

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Si tu n'es pas plus clair, ça m'étonnerait qu'on puisse répondre.
    Pour commencer, poste un code qui ressemble à du code C++, et non du charabia approchant.

    => Qu'est ce que f (il y en a trois dans ce code) ? val ? conv ? Bond ? yc ? g ?

    Bref sois plus clair

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 91
    Par défaut
    ok
    désolé

    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
     
    static CBond* s_Bond = NULL;
     
    static int s_nbBond = 0;
     
    CYieldCurve* returnYieldCurve(string s)
    {
    	if(s == "EUR") return s_EURyieldCurve;
    	if(s == "GBP") return s_GBPyieldCurve;
    	if(s == "USD") return s_USDyieldCurve;
    	if(s == "CHF") return s_CHFyieldCurve;
    	if(s == "SEK") return s_SEKyieldCurve;
    	if(s == "JPY") return s_JPYyieldCurve;
    	return NULL;
    }
     
     
    VARIANT f()
    {
    CYieldCurve *yc = returnYieldCurve(s);	
     
     
    		if((yc != NULL))
    		{
    			double f = 0.0;
    			double cc ;				
     
    			delete s_Bond;
    			CBond*	Bond = NULL;
    			Bond=new CBond();
     
    			Bond->disc_yc=(CYieldCurve*)yc;
    			cc=Bond->CalcCouponTable();
    			s_Bond = Bond;f = ++s_nbBond;			
    			conv.DoubleToVariant(&f,&val); 	
     
    		}
    		else
    		{
    			s = "erreur";
    			conv.StringToVariant(s,&val);
    		}
     
    	return val;
    }
    ensuite je désire utiliser mon s_bond dans une autre fonction

    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
     
     
    ExcelConvType conv;
    VARIANT val;
    ....
    ....
    if (conv.VariantToDouble(&vSpread,&spread))
    	{
    		if (s_nbBond>0) 
    		{
    			Bond=returnBond();	
     
    			cc=Bond->PvYc(date,price,1,spread);
     
    			double redemption_value=100.0;
    			price/=Bond->principal/redemption_value;
    			conv.DoubleToVariant(&price,&val);
    		}
    	}

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 91
    Par défaut
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CBond* Bond;
    double price=0;
     
    CBond* returnBond()
    {
    	return s_Bond;
    }

  5. #5
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    désolé je ne peux pas faire de copier / coller

    quand tu fais (CyieldCurve*)yc, il faut vérifier que yc est transformable en ce type.

    je crois qu'en c++ on utilise les dynamic_cast:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     dynamic_cast<CyieldCurve *> yc;
    Après on vérifie si yc est NULL ou pas, si yc est nul alors ca veut dire qu'il est impossible de le convertir dans ce type.

    Edit: dans le code que tu as posté après, yc est déjà un CYieldCurve*.

    Pourquoi alors le convertir?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 91
    Par défaut
    en fait ce cast j'aurai pu ne pas le mettre
    puisque yc est un pointeur sur CYieldCurve

    mais qu'est qui explique que mon Bond->disc_yc est vide lors d'un appel dans une autre fonction

  7. #7
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    tu peux mettre le code de CBond (la déclaration de la classe) s'il te plait?

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

Discussions similaires

  1. [WD9] Utiliser une fonction d'un ActiveX avec pointeur
    Par archimor dans le forum WinDev
    Réponses: 3
    Dernier message: 21/03/2006, 00h41
  2. petit problème avec pointeurs
    Par Kerod dans le forum C
    Réponses: 12
    Dernier message: 09/12/2005, 15h48
  3. Problème de gestion de chaînes avec pointeur
    Par LorDjidane dans le forum C
    Réponses: 18
    Dernier message: 19/10/2005, 15h40
  4. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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