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++

  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?

  8. #8
    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
    pour la partie qui nous intéresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class CBond  
    {
    public:
     
    	CBond(const CBond& bond);
    	virtual ~CBond();
                 CYieldCurve* disc_yc;	
                CBond():		
    		SetDefaults();
    	};

  9. #9
    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
    Toujours pas compris. C'est mal structuré. Mais bon passons.

    Quand tu dis que ton "Bond->disc_yc est vide", ça veut dire quoi ? S'il vaut NULL, alors tu dois faire une affectation non voulue à un endroit.

  10. #10
    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
    non ce n'est pas vide
    mais tous les élements a;l'intérieur ont des valeurs nulles
    alors qu'avant la sortie de ma fonction f elles ne l'étaient pas

  11. #11
    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
    Je me demande si ce que tu as posté c'est bien le code d'origine.

    Le seul conseil que je peux te donner, c'est d'utiliser le debugger pour tracer ton objet...

  12. #12
    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
    oui c'est le code d'origine

    je fais bien du pas a pas

    on est d'accord
    mon code a l'air correct?

  13. #13
    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
    bon

    en fait dans mon excel j'étais en calcul automatique

    ce qui me vidait mon objet disc_yc

    c'est pas très clair mais cela vient de ce nouvel appel

    merci en tout cas pour vos interventiosn

+ 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