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
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
> 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".
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.
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() ?