romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010
-
21 juil. 2005 à 18:16
romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010
-
21 juil. 2005 à 23:05
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;
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
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
Etant donné que dispo est déclaré dans Energie et que tu n'as pas
spécifié la class Energie c'est normal que le compilateur ne connaisse
pas dispo vu qu'il ne cherche pas dans espace de déclaration de la
classe :)
romca
Messages postés48Date d'inscriptionmercredi 26 janvier 2005StatutMembreDernière intervention19 avril 2010 21 juil. 2005 à 19:31
Ok merci beaucoup j'ai vu, je suis resté 1 heure la dessus...J'ai même pas vu.......je me suis obstiné sur les variables...vraiment degouté!
Par contre etant donne que la variable "duree" est de type "float" et que la variable dispo est de type "int", comment est ce possible de faire des calculs avec 2 types differents de variables sans les convertir?
Il me reste l'erreur de compil à la ligne PuissanceFournie=PuissanceDemandee;////Symbole PuissanceFournie non defini.
J'ai cherché..je vois encore pas?
Aurais tu une idée?
Merci.