Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e) (modifié)

Bon voilà,

 

J'ai simplifié mon problème au maximum :

 

J'ai une classe en C++ contenant 2 valeurs private :

 

int m_Longueur;

int m_Largeur;

 

en public

 

int getLargeur();

int getLongueur();

 

getLargeur et getLongueur permettent d'accéder depuis le main aux variables private.

 

la fonction getLargeur :

 

int getLargeur()

{

return m_Largeur;

}

 

Mon problème est que ça me retourne une valeur qui n'a rien à voir avec celle que j'ai initialisée (je vous ai épargné les fonctions setLongueur() et setLargeur() )on dirait que ça me retourne une adresse...

 

J'ai essayé de mettre les 2 variables private en public pour m'assurer que ce n'est pas l'initialisation des variables qui est foireuse mais là c'est ok...

 

Est ce que je me trompe quelque part ???

 

Nico

Modifié par nico_be

Posté(e)
void getLargeur()

{

return m_Largeur;

}

c'est une faute de frappe ou tu as réellement surchargé le membre getLargeur() ?? (faudrait qu'il renvoie int pour être cohérent...)

Posté(e) (modifié)
void getLargeur()

{

return m_Largeur;

}

c'est une faute de frappe ou tu as réellement surchargé le membre getLargeur() ?? (faudrait qu'il renvoie int pour être cohérent...)

Désolé c'est bien int getLargeur() que je voulais écrire, je l'ai corrigé dans mon premier post

 

Nico

Modifié par nico_be
Posté(e)

OK... reprenons...

 

lorsque tu dis "on dirait que ca me retourne une adresse", ça ressemble à quoi exactement ? tu vois ça en faisant un dump mémoire dans le débuggeur, ou en faisant un cout ?

et quand tu dis "J'ai essayé de mettre les 2 variables private en public (...) mais là c'est ok..." ca veut dire que "ca ne retourne pas une adresse" ??

Posté(e)

Donc, je fait printf("%d", oRect.getLargeur());

ça me retourne 419855 alors qu'en réalité, m_Largeur vaut 100.

 

D'ailleurs que je mette n'importe quelle valeur, c'est toujours le même nombre qui revient donc je suppose que c'est bien une adresse qu'il me retourne.

 

Donc les valeurs private d'une classe étant inaccessible depuis le main, je les ai mises en public afin de pouvoir faire un printf et là la valeur de m_Largeur est bien celle que j'ai initialisé.

 

L'erreur ne peut se trouver que dans le getLargeur() vu que je n'effectue aucune autre opération à part l'initialisation de m_largeur à une valeur, et ensuite que je la consulte avec getLargeur().

 

PS : oRect étant déclaré dans le main : CSurfaceRectangle oRect;

 

 

Nico

Posté(e)

Il me semble que :: sert à définir une fonction membre déjà déclarée, dans un fichier séparé, et aussi à accéder à des membres static (fonction ou pas)

 

C'est . ou -> selon si tu as un objet ou un pointeur vers un objet (comme en Java et en C# peut-être, mais aussi comme en C !)

 

Tu es sur d'avoir mis les parenthèses pour tous tes appels à ta fonction ? Sinon, en effet c'est une adresse (ou un pointeur de fonction)

 

oRect.getLargeur(); //appelle ta fonction
oRect.getLargeur; //pointe vers ta fonction

Posté(e)
Il me semble que :: sert à définir une fonction membre déjà déclarée, dans un fichier séparé, et aussi à accéder à des membres static (fonction ou pas)

 

C'est . ou -> selon si tu as un objet ou un pointeur vers un objet (comme en Java et en C# peut-être, mais aussi comme en C !)

 

Tu es sur d'avoir mis les parenthèses pour tous tes appels à ta fonction ? Sinon, en effet c'est une adresse (ou un pointeur de fonction)

 

oRect.getLargeur(); //appelle ta fonction
oRect.getLargeur; //pointe vers ta fonction

C'était ça Leneuf22 !

 

Merci à toi ainsi qu'a Kewlcat de vous être penché sur mon problème ! :P

 

Nico

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...