Librairie dynamique et variables remanentes
MrLuck
Messages postés
46
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je travaille sur un programme en C++ qui utilise des variables remanentes lors de l'instanciation d'un certain objet. J'aimerai faire plusieurs appels de cet objet mais je me retrouve bloqué par ces variables remanentes.
Exemple : mon objet est un coureur cycliste, et j'ai une variable remanente pour sa vitesse, mais lorsque j'ai plusieurs coureurs, si j'augmente la vitesse d'un de mes coureurs, je change la vitesse de tous.
On m'a parlé d'une technique à l'aide de librairies dynamiques mais je ne trouve aucune documentation dessus.
D'apres ce qu'on m'a dit, si mon objet appel une librairie dynamique, les variables remanentes seraient propre à cette librairie ce qui me permettrait d'utiliser plusieurs instances de mon objet sans problemes.
Pouvez vous me dire si vous avez d'autres technique ou si quelqu'un connait celle des librairies dynamiques ?
Merci
je travaille sur un programme en C++ qui utilise des variables remanentes lors de l'instanciation d'un certain objet. J'aimerai faire plusieurs appels de cet objet mais je me retrouve bloqué par ces variables remanentes.
Exemple : mon objet est un coureur cycliste, et j'ai une variable remanente pour sa vitesse, mais lorsque j'ai plusieurs coureurs, si j'augmente la vitesse d'un de mes coureurs, je change la vitesse de tous.
On m'a parlé d'une technique à l'aide de librairies dynamiques mais je ne trouve aucune documentation dessus.
D'apres ce qu'on m'a dit, si mon objet appel une librairie dynamique, les variables remanentes seraient propre à cette librairie ce qui me permettrait d'utiliser plusieurs instances de mon objet sans problemes.
Pouvez vous me dire si vous avez d'autres technique ou si quelqu'un connait celle des librairies dynamiques ?
Merci
A voir également:
- Librairie dynamique et variables remanentes
- Touches rémanentes - Guide
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- Sommaire dynamique word - Guide
3 réponses
Si j'ai bien compris, ce que tu appelles une variable rémanente est une variable statique ?
Si c'est une variable statique interne à :
- une classe ou une structure : elle est partagée par toutes les instances de ladite classe/structure
- une fonction : la valeur de la variable est mémorisée entre deux appels de cette fonction
- un fichier : la variable peut être vue comme une variable globale dont la portée est limitée au fichier
Supposons que tu aies une classe cycliste dont l'un des attributs est un unsigned qui stoke la vitesse. Alors comme cette vitesse est spécifique au cycliste elle ne doit pas être statique.
Au contraire, un compteur d'instance (un compteur qui compte le nombre de cycliste, incrémenté à chaque appel d'un constructeur de la classe cycliste et décrémenté à chaque appel du destructeur) est commun aux cyclistes, donc est un membre statique de la classe cycliste.
Voir aussi :
http://www.commentcamarche.net/forum/affich 9289549 compteur d objets c#4
Quoi qu'il en soit je ne vois pas le rapport avec des histoires de librairies dynamiques. Une librairie dynamique (fichier .so sous linux) peut être vu comme un .o à ceci prêt qu'elle n'est pas incorporée dans l'exécutable final contrairement à une librairie dynamique (.a sous linux). C'est ce qui permet pour un même programme de tourner avec différentes versions de librairies. A aucun moment la notion de portée et de partage de variable n'est modifiée.
Bonne chance
Si c'est une variable statique interne à :
- une classe ou une structure : elle est partagée par toutes les instances de ladite classe/structure
- une fonction : la valeur de la variable est mémorisée entre deux appels de cette fonction
- un fichier : la variable peut être vue comme une variable globale dont la portée est limitée au fichier
Supposons que tu aies une classe cycliste dont l'un des attributs est un unsigned qui stoke la vitesse. Alors comme cette vitesse est spécifique au cycliste elle ne doit pas être statique.
Au contraire, un compteur d'instance (un compteur qui compte le nombre de cycliste, incrémenté à chaque appel d'un constructeur de la classe cycliste et décrémenté à chaque appel du destructeur) est commun aux cyclistes, donc est un membre statique de la classe cycliste.
class cycliste{
protected:
unsigned vitesse;
static unsigned compteur_instance;
public:
cycliste(unsigned vitesse0 = 0):vitesse(vistesse0){
++compteur_instance;
}
~cycliste(){
--compteur_instance;
}
};
cycliste::compteur_instance = 0; // superflu à priori
Voir aussi :
http://www.commentcamarche.net/forum/affich 9289549 compteur d objets c#4
Quoi qu'il en soit je ne vois pas le rapport avec des histoires de librairies dynamiques. Une librairie dynamique (fichier .so sous linux) peut être vu comme un .o à ceci prêt qu'elle n'est pas incorporée dans l'exécutable final contrairement à une librairie dynamique (.a sous linux). C'est ce qui permet pour un même programme de tourner avec différentes versions de librairies. A aucun moment la notion de portée et de partage de variable n'est modifiée.
Bonne chance