Voilà, je n'arrive pas a compilé une unité (energie.cpp) sous Borland Builder 6. Le debugger m'indique plusieurs erreurs de "symbole non defini" sur 2 variables dans un méthode, pourtant j'ai bien déclaré les variables auparavant et j'ai pas d'erreurs de syntaxe.
Je pense que c'est du a ce que dans les expressions, 2 types de donnees sont utilisees, "float" et "int". Est cela le pbm? Si oui comment pourrais je faire pour le regler en convertissant le type de variable. Voici le prog .
Il y a deux fiches "energie.h"(Declaration de la classe) et energie.cpp(les methodes). J'ai mis en rouge les lignes de codes ou il y a une erreur. Merci a vous.
//--------------------Déclaration de classe Energie------------------------------------------------------
#ifndef EnergieH
#define EnergieH
//--------------------------------------------------------------------------
#include "coeur.h"
//---------------------------------------------------------------------------
const int MaxDispo=1000;
const int apportMaxPulse=150;
const int puissFVitales=100;
const int limStresser=30; // Joules non consommées
const int limCalmer=60;
const int pourcentStresser=-10; //actions de regulation
const int pourcentCalmer=2;
const float rendementMuscles=0.5;
//--------------------------------------------------------
class coeur; //declaration incomplete.
//On est oblige car il existe un pointeur
//de la classe Energie vers la classe coeur (monCeour). Donc on est
//obligé de declarer la classe coeur avant la classe energie
class Energie
{
private:
coeur *monCoeur; //Pointeur sur la classeCoeur
int dispo; //Joules.Energie immediatemment dispo
int PuissanceDemandee; //Watts
int PuisssanceFournie; //Watts
public:
__fastcall Energie(coeur*); // ?
void __fastcall majPuissanceDemandee(int puiss);
int __fastcall lectPuissanceFournie();
void apportPulse(int duree);
};
//------------------Methodes de Energie-----------------------------------------------
#endif
#pragma hdrstop
#include <iostream.h> //Pour fonction "cout "
#include "Energie.h"
#pragma package(smart_init)
//-----------Constructeur Energie-----------------------------------------
__fastcall Energie::Energie(coeur* pc)
{
monCoeur=pc;
dispo=MaxDispo;
PuissanceDemandee=0; //Watts
PuisssanceFournie=0;
}
//---------Methode majPuissanceDemandee--------------------------------------
void __fastcall Energie::majPuissanceDemandee(int puiss)
{
PuissanceDemandee=puiss;
}
//-------------Methode apportPulse--------------------------------------------
void __fastcall apportPulse(float duree)
{
int surplusApport;
//retrait de la consommation durant la duree (en ms)
dispo=dispo-(duree*puissFVitales); //erreur 2451 symbole "dispo" non defini
//J'ai essayé avec dispo=dispo-(duree*(float)puissFVitales) mais idem. "duree" est une variable de type float.
if (dispo>(duree*PuissanceDemandee)/rendementMuscles)erreur 2451 symbole "PuissanceDemandee" non defini
{
//On dispose de suffisamment d'energie
dispo=dispo-(duree*PuissanceDemandee/rendementMuscles);
PuissanceFournie=PuissanceDemandee;////Symbole PuissanceFournie non defini
}
else
{
//On ne dispose pas de suffisamment d'energie
PuissanceFournie=dispo*rendementMuscles/duree;
dispo=0;
}
//Ajout de l'energie apportee dans la limite de maxDispo
if((dispo+apportMaxPulse)<MaxDispo)
{
dispo=dispo+apportMaxPulse;
surplusApport=0;
}
else
{
dispo=MaxDispo;
surplusApport=dispo+apportMaxPulse-MaxDispo;
}
//Regulation
if(surplusApport<limStresser) monCoeur->MajTempo(pourcentStresser);//Symbole monCoeur non defini
if(surplusApport>limCalmer) monCoeur->MajTempo(pourcentCalmer);
//Ecriture temporaire
cout<<"Puissance Fournie: "<<PuissanceFournie<<"Energie dispo: "<<dispo<<endl;
}