[c++] Accés à une même case mémoire???
Fermé
usthb07
Messages postés
1
Date d'inscription
samedi 30 juin 2007
Statut
Membre
Dernière intervention
30 juin 2007
-
30 juin 2007 à 20:42
farfattou - 11 mars 2008 à 13:20
farfattou - 11 mars 2008 à 13:20
A voir également:
- [c++] Accés à une même case mémoire???
- Aller à la ligne dans une case excel - Guide
- Acces rapide - Guide
- Mémoire vive - Guide
- Je n'ai plus acces a ma boite mail gmail - Guide
- Accès refusé - Guide
2 réponses
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
1 juil. 2007 à 00:47
1 juil. 2007 à 00:47
Bonjour,
Je ne connais absolument pas ce protocole de routage mais on va essayer de voir le problème de façon plus générale. Si on comprend bien tu as deux dossiers comme ceci au même niveau :
aodv : aodv.h, aodv.cpp
mac : mac_802-11.h, mac_802-11.cpp
La classe Aodv est "seule" tandis que la classe Mac802_11 dérive d'une classe Mac.
Dans Aodv tu as donc un truc genre : class Aodv {private : type energy;}
Pour commencer, au niveau du fichier mac_802-11.h, si tu fais référence à "aodv/aodv.h", ça veut dire que tu vas chercher la classe dans "mac/aodv/aodv.h" puisque le fichier mac_802-11.h se trouve dans un dossier "mac" tu as écrit. Donc déjà il faudrait plutôt inclure "../aodv/aodv.h".
Je n'ai pas l'habitude d'utiliser le mot clé friend mais d'après ce que j'en ai lu : "friend permet de déclarer une fonction ou une classe avec les droits d'accès complets aux membres privés et protégés de la classe, sans être un membre de cette classe. La classe externe dispose d’un accès complet à la classe qui la déclare friend."
Donc ça voudrait dire qu'en déclarant "friend class aodv; ", c'est la classe Aodv qui a accès aux membres de la classe Mac802_11 et pas l'inverse. On est d'accord ou j'ai mal compris la règle ?
Quoiqu'il en soit si j'avais une classe A avec une propriété "a" et que je voudrais y accéder via la méthode "bVeutA()" de la classe B je ferais comme ceci :
Programme principal :
Classe A :
Je ne connais absolument pas ce protocole de routage mais on va essayer de voir le problème de façon plus générale. Si on comprend bien tu as deux dossiers comme ceci au même niveau :
aodv : aodv.h, aodv.cpp
mac : mac_802-11.h, mac_802-11.cpp
La classe Aodv est "seule" tandis que la classe Mac802_11 dérive d'une classe Mac.
Dans Aodv tu as donc un truc genre : class Aodv {private : type energy;}
Pour commencer, au niveau du fichier mac_802-11.h, si tu fais référence à "aodv/aodv.h", ça veut dire que tu vas chercher la classe dans "mac/aodv/aodv.h" puisque le fichier mac_802-11.h se trouve dans un dossier "mac" tu as écrit. Donc déjà il faudrait plutôt inclure "../aodv/aodv.h".
Je n'ai pas l'habitude d'utiliser le mot clé friend mais d'après ce que j'en ai lu : "friend permet de déclarer une fonction ou une classe avec les droits d'accès complets aux membres privés et protégés de la classe, sans être un membre de cette classe. La classe externe dispose d’un accès complet à la classe qui la déclare friend."
Donc ça voudrait dire qu'en déclarant "friend class aodv; ", c'est la classe Aodv qui a accès aux membres de la classe Mac802_11 et pas l'inverse. On est d'accord ou j'ai mal compris la règle ?
Quoiqu'il en soit si j'avais une classe A avec une propriété "a" et que je voudrais y accéder via la méthode "bVeutA()" de la classe B je ferais comme ceci :
Programme principal :
#include <stdlib.h> #include "a.h" #include "b.h" int main(int argc, char *argv[]) { A a(5); B b; b.bVeutA(a); system("PAUSE"); return 0; }
Classe A :
#ifndef _A #define _A class A { private: int a; public : A(const int); int getA(void) const; }; #endif
bonjour,
j'ai le même problème que vous avez posté le samedi 30 juin 2007.
La seule différence c'est que moi j'ai déclaré une variable dans la classe mac-802.11 et que j'en ai besoin dans la classe AODV.
Dons je me posais la question est ce que vous pourriez m'aider svp si c'est possible ?
je vous serai trés reconnaissante.
merci d'avance
j'ai le même problème que vous avez posté le samedi 30 juin 2007.
La seule différence c'est que moi j'ai déclaré une variable dans la classe mac-802.11 et que j'en ai besoin dans la classe AODV.
Dons je me posais la question est ce que vous pourriez m'aider svp si c'est possible ?
je vous serai trés reconnaissante.
merci d'avance
2 juil. 2007 à 19:24
Tout d'abord je vous remercie d'avoir répondu à ma question.
J'ai essayé d'apliquer ce que vous m'avez dit.
Le bug "segmentation fault" n'est pas apparu car ça ne pointe pas sur un objet NULL. Mais la valeur de la variable membre "energy" que j'ai récupérée n'est pas la même que celleque j'ai modifiée dans aodv.cc
car ça ne pointe pas sur le même objet AODV.
Merci