Bonjour,
Si une fonction membre d'une classe a besoin d'un tableau de structures de données par exemple, où le définissez-vous (sachant que ce tableau doit resté privé) , puisqu'il n 'est pas possible de le faire dans le corps de la classe ?
Willy.
Bonjour,
Si une fonction membre d'une classe a besoin d'un tableau de structures de données par exemple, où le définissez-vous (sachant que ce tableau doit resté privé) , puisqu'il n 'est pas possible de le faire dans le corps de la classe ?
Willy.
Si le tableau n'est utile qu'a la fonction, déclare le dans la fonction.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
Ça dépend de la fréquence d'appel de la fonction, non ?
Parfois, il vaut mieux s'économiser des allocations.








+1 pour oodini.
Je dirais que tout dépend de l'utilisation du tableau.
willycat, Est-ce qu'il serait possible d'avoir plus de précision du contexte?
Bonjour,
en fait, c'est plus une question d'ordre général plutôt que relative à un contexte en particulier. Il n'y a pas si longtemps que j'ai débuté en c++ et j'arrive à un stade où, dans mon projet récemment commencé, je me pose la question de savoir où définir les données utilisées par les fonctions membres d'une classe, puisque dans la définition de la classe, cela n' est pas possible (sauf pour des données entières déclarées "static const") et que ces données doivent rester privées.
Par exemple, soit une classe "terminal_t" pour la gestion d'un terminal disposant de membres privées et de fonctions membres privées et publiques dont deux d'entre-elles permettent l'envoie et la réception de caractères. Pour leur fonctionnement, ces fonctions ont besoin de tableaux de données comme des tableaux de caractères ASCII et d'autres pour la reconnaissance des codes de contrôle. Or, où les définir sachant que ces données sont utilisées par plusieurs fonctions membres et qu'elles doivent être privées ?
Actuellement, je songe à cette solution:
mais je trouve cette solution un peu bancale. Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class terminal_t { ... const mystruct *ptr; ... }; terminal_t::terminal_t() { static const mystruct data[] = { ... }; ptr = data; }
Merci,
Willy.








je ne sais pas si cela peut aider et que j'ai bien compris ce que tu as écris, mais le fait qu'un attribut soit privé n'a pas d'importance à l'intérieur de la classe. Ainsi une méthode de la même classe peut accéder sans problème à la donnée membre privé.
Ainsi, un scénario classique :
définition d'un tableau privé dans la classe,
Le constructeur ou une méthode d'initialisation permet d'initialiser le tableau,
La ou les fonctions ayant besoin du tableau l'utilise.
Ceci permet d'avoir une certaine souplesse pour l'initialisation qui peut se faire dynamiquement (lecture d'un fichier, entrée utilisateur, données calculées, ...) et évite d'écrire en dur dans le programme.
Y a t'il un intérêt particulier à avoir un tableau static const ?
Nope. Das ce cas un tableau static const local à la fonction est plus approprié.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
Partager