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, 01h41
  2. petit probl�me avec pointeurs
    Par Kerod dans le forum C
    R�ponses: 12
    Dernier message: 09/12/2005, 16h48
  3. R�ponses: 18
    Dernier message: 19/10/2005, 16h40
  4. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    R�ponses: 2
    Dernier message: 17/02/2004, 20h49
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    R�ponses: 2
    Dernier message: 20/10/2003, 14h19

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