Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1504 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème d'affectation (lib - vc2005)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème d'affectation (lib - vc2005)

n°1696314
Colliculus
Posté le 03-03-2008 à 14:58:01  profilanswer
 

Bonjour,
 
Je suis confronté à un curieux problème lors de l'affectation d'une valeur à une variable.
Tout d'abord j'utilise en fait une bibliothèque static (créée par mes soins) dans l'un de mes programmes.
 
Dans cette bibliothèque j'ai entre autre une classe qui contient trois entiers:
int a, b, c;
 
Dans mon programme je récupère un objet du type de ma classe et les entiers ont les valeurs
a=1, b=2, c=3
 
et quand je fais
int test = mon_objet->b;
test vaut 1!!! (et non 2)
 
En récupérant non pas la valeur mais l'adresse de la variable:
int *test = &(mon_objet->b);
je m'appercois qu'en fait test a l'adresse de la variable a!!!
 
J'ai donc pensé à un problème d'alignement mémoire et essayé d'imposer tel ou tel alignement (toujours les 2 même) lors de la compilation de ma lib et de mon programme
(option /Zp dans visual cpp 2005).
 
(Je précise que j'ai tout testé en mode debug pas à pas et que le compilateur me donne bien ces abérations quand je regarde les valeurs de mes variables).
 
Si quelqu'un aurait une idée...
 
Merci

mood
Publicité
Posté le 03-03-2008 à 14:58:01  profilanswer
 

n°1696452
Joel F
Real men use unique_ptr
Posté le 03-03-2008 à 17:23:24  profilanswer
 

Un bout de code stp

n°1696655
Ace17
Posté le 03-03-2008 à 23:33:42  profilanswer
 

A mon avis t'es en train de débugger un vieil exe, c'est à dire que ton source correspond pas au programme qui tourne.

n°1697779
Colliculus
Posté le 05-03-2008 à 17:12:54  profilanswer
 

Ace17: Du tout. Si, dans mon projet visual de ma lib je fais "clean" (donc pour supprimer les fichiers compilés), et que je vais compiler mon projet qui utilise cette lib, ca ne link pas! (erreur lib non trouvée)
 
Joel F: Je ne vois pas ce que ca pourrai apporter de plus mais voici:
 
La déclaration de mon objet dans ma lib:
 
class DAttributes {
public:
 DAttributes();
 ~DAttributes();
public:
 const char *get_name();
 int get_oneWay();
 int get_maxSpeed();
 int get_nameRef();
public:
 void clear();
 void set_attribute(int type, int value);
public:  
 std::string name;
 int oneWay;
 int maxSpeed;
public:
 int name_ref;
};
 
Et dans le code de mon programme principal:
 
DAttributes *att = seg->attributes;
int *nr = &att->name_ref;
int nr2 = att->get_nameRef();
 
 
Si je regarde ce que vaut nr, il vaut l'adresse de l'attribut maxSpeed dans mon objet att.
Et nr2 vaut la valeur de maxSpeed.
Donc il y a bien un décalage.
 
Bon je précise que j'ai rajouté des accesseurs (get_maxSpeed, get_nameRef) à ma classe DAttributes, et qu'en passant par ces fonctions, je n'ai plus de problème.
 
(Mais bon, ca reste quand même pas très normal ce décalage...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème d'affectation (lib - vc2005)

 

Sujets relatifs
Problème afficher/montrer DIVProblème avec SAS
Problème connexion serveur sql serverProblème sauvegarde envoi de mails Lotus Notes dans macro VBA
VBA Excel, problème de filtre avec valeurs décimalescamera ip problème d'affichage
formulaire html et liste déroulante, problème avec l'option par défaut[JAVA SWING] probleme avec la gestion des layout manager
Petit problème avec encodageproblème encodage caractére avec htmlspecialchars()
Plus de sujets relatifs à : Problème d'affectation (lib - vc2005)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR