ouedge
Messages postés6Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention20 mai 2009
-
19 mai 2009 à 16:37
ouedge
Messages postés6Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention20 mai 2009
-
20 mai 2009 à 12:33
Bonjour à tous,
Je suis en train de travailler sur un programme en C++ et j'obtiens régulièrement ce message "...must point to class/struct/union" quand je compile. En fait le problème vient du fait que dans ma fonction main(), j'utilise régulièrement des variables définis dans d'autres classes en utilisant les pointeurs (exemple: DataC->time ) et cela marche très bien. Or j'ai dû créer une fonction dans main() qui fait appel aux mêmes variables mais cette fois ci j'obtiens des problèmes lors de la compilation. Je trouve étonnant que main() réussi à utiliser ces variables d'autres classes alors qu'une fonction écrite dans main() n'arrive pas à la faire !
Merci pour toute aide
Amicalement
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 19 mai 2009 à 17:35
Non, elle est tout à fait compréhensible. Mais sans "voir" ce qui cloche, c'est super dur de te répondre précisément.
Peux-tu au moins reproduire ce problème en épurant/simplifiant un maximum un morceau de ton code ?
J'ai typiquement ce genre de problème lors de la compil situé dans la fonction fzenner seulement :
error C2065: 'DataC' : undeclared identifier
error C2227: left of '->update_temperature_dependece_Data' must point to class/struct/union
Vous n’avez pas trouvé la réponse que vous recherchez ?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 20 mai 2009 à 12:04
> error C2065: 'DataC' : undeclared identifier
Heu c'est normal !
Si tu déclares une variable locale, elle n'est visible que dans la fonction ou elle est déclarée. Donc dans fzenner, celle-ci n'existe pas. Il faut la passer en argument de la fonction, pour pouvoir s'en servir.
Renseigne toi sur ce qu'on appelle "la portée des variables" et les "scopes".
ouedge
Messages postés6Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention20 mai 2009 20 mai 2009 à 12:12
Salut merci pour la réponse. En fait DataC n'est pas une variable mais un pointeur qui (selon moi) pointe sur une fonction écrite dans la classe AllData et pas dans main(). En fait j'ai déjà utilisé cette ligne dans main () : C0 = DataC->C_alpha_star et j'obtiens bien la valeur numérique de "C_alpha_star" calculé dans la fonction update_temperature_dependece_Data(Tstart,0) de la classe AllData.
ouedge
Messages postés6Date d'inscriptionmardi 19 mai 2009StatutMembreDernière intervention20 mai 2009 20 mai 2009 à 12:23
ahh ok et il y a pas un moyen de pouvoir accéder aux attributs de la classe Alldata dans la fonction fzenner sans passer par les mettre en argument lors de l'appel de la fonction dans main() ?