IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Compr�hension de code


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre � l'essai
    Femme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Par d�faut Compr�hension de code
    Bonjour,

    je suis entrain de modifier le code du protocole DSR sous NS2 ,
    j'ai rencontr� ce code dans le fichier Path.h
    et j'arrive pas � comprendre le constructeur ID, j'ai jamais vu une d�claration pareil..
    votre aide m'est vraiment pr�cieuse.
    Merci
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Struct ID
    {
    friend class Path;
    
    inline ID(const struct sr_addr &a): addr(a.addr), 
        type((enum ID_Type) a.addr_type), t(-1),
    link_type(LT_NONE),
    	  log_stat(LS_NONE)
    	{
    		assert(type == NONE || type == MAC || type == IP);
    	}
    -------
    Merci
    Bou

  2. #2
    Invit�
    Invit�(e)
    Par d�faut
    Bonjour,

    Ce ne sont pas des d�clarations mais des initialisations des membres de la structure ID
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    ID(const struct sr_addr &a) 
      : 
        addr(a.addr),                     // Initialisation de addr      à la valeur a.addr
        type((enum ID_Type) a.addr_type), // Initialisation de type      à la valeur a.addr_type
        t(-1),                            // Initialisation de t         à la valeur -1
        link_type(LT_NONE),               // Initialisation de link_type à la valeur LT_NONE
        log_stat(LS_NONE)                 // Initialisation de log_stat  à la valeur LS_NONE
    c'est ce que l'on appelle une liste d'initialisation.

  3. #3
    Membre � l'essai
    Femme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Par d�faut Compr�hension de code
    Bonjour,

    Merci beaucoup Winjerome.. pour cette r�ponse claire et efficace.

    Bou

  4. #4
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Parce que visiblement, tu ne le sais pas encore, cette initialisation est importante.

    Cela permet de d�finir quel constructeur est appel� pour chaque membre, et avec quels arguments.
    Cela permet aussi de ne pas construire par d�faut puis remplacer les membres.

    C'est important pour la manipulation de ressources, telles qu'une r�f�rence, un fichier, etc.

    En fait, pour une r�f�rence, c'est le seul moyen de la remplir.
    Le code suivant ne compile pas, car la r�f�rence n'est pas initialis�e.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    class bidule {
        int& ref;
    public:
        bidule (int& r) {ref=r;}
    };
    Il faudrait faire:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    class bidule {
        int& ref;
    public:
        bidule (int& r) : ref(r){}
    };

  5. #5
    Membre � l'essai
    Femme Profil pro
    �tudiant
    Inscrit en
    Juin 2014
    Messages
    6
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Juin 2014
    Messages : 6
    Par d�faut compr�hension du code
    Bonjour,

    merci Pierre ' leternel' pour ces informations int�ressantes, c vrai que je savais pas �a.
    par la m�me occasion, pouvez vous m'aider sur ce code, je vous serez tr�s reconnaissante.

    En faite je suis entrain de modifier le code du protocle DSR dans NS2.

    il y un fichier Hdr_sr.h // qui d�crit l�ent�te du packet.

    au d�but du fichier il y a la structure suivante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct sr_addr {
        int addr_type;	 /* same as hdr_cmn in packet.h */
        nsaddr_t addr;
    
        /*
        * Metrics that I want to collect at each node
        */
        double	Pt_; // cette variable est d�clar� dans la structure mais n'est pas utilis�
                                             // apr�s. moi je veux changer le code pour qu'il la prenne en consid�ration
    };
    et les attributs de la calsse Hdr_sr sont les suivants :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    class hdr_sr {
        private:
        int valid_;	 /* is this header actually in the packet?
        and initialized? */
        int salvaged_;	/* packet has been salvaged? */
    
        int num_addrs_;
        int cur_addr_;
        struct sr_addr addrs_[MAX_SR_LEN];// c'est un tableau d'ID dont le type est la structure sr_adrr (d�crite au d�but)
    
        struct route_request	sr_request_;
        struct route_reply	sr_reply_;
        struct route_error	sr_error_;
    
        struct flow_header sr_flow_;
        struct flow_timeout	sr_ftime_;
        struct flow_unknown	sr_funk_;
        struct flow_default_err sr_fdef_unk;
    ...}
    la fonction qui initialise le Tableau addrs_[MAX_SR_LEN] est la suivante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    inline void append_addr(nsaddr_t a, int type) {
        assert(num_addrs_ < MAX_SR_LEN-1);
        addrs_[num_addrs_].addr_type = type;
        addrs_[num_addrs_++].addr = a;
    }
    comme ici il n initialise pas le champs Pt_, j'ai modifi� la fonction ainsi :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    inline void append_addr(nsaddr_t a, int type, double P) {
        assert(num_addrs_ < MAX_SR_LEN-1);
        addrs_[num_addrs_].addr_type = type;
        addrs_[num_addrs_].Pt_=P
        addrs_[num_addrs_++].addr = a;
    }
    dans un autre fichier (dsragent.cc) il appelle cette fonction pour l'initialisation :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void DSRAgent::testinit()
    {
        struct hdr_sr hsr;
        
        if (net_id == ID(1,::IP))
        {
            printf("adding route to 1\n");
            hsr.init();
            hsr.append_addr( 1, NS_AF_INET ); // je l ai remplac� par la nouvelle d�finition : hsr.append_addr( 1, NS_AF_INET, 0.07 ); 
            
            
            route_cache->addRoute(Path(hsr.addrs(),
            hsr.num_addrs()), 0.0, ID(1,::IP));
        }
    j'ai essay� apr�s d'afficher le contenu du tableau addrs_[].Pt_ , �a m'affiche toujours des z�ros .. comme si il prend pas en consid�ration le champs Pt et il ne le remplie pas ..

    je suis bloqu� dessus �a fais 3 semaines .. je suis � court d'id�e..
    votre aide m'est vraiment tr�s pr�cieuse..
    merci d'avance

    ci-joint le fichier dont je vous ai parl� (hdr_sr.h )
    Fichiers attach�s Fichiers attach�s

  6. #6
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Le code m'a l'air normal.

    Quand un affichage ne donne pas ce qu'on veut, c'est qu'on affiche autre chose.
    Soit parce ce que la valeur n'est pas celle qu'on croit, soit parce qu'on affiche une autre chose.
    Fais voir le code d'affichage, je ne serai pas surpris qu'il y ait une erreur dedans.

Discussions similaires

  1. compr�hension de code en asp
    Par bidule123456 dans le forum ASP
    R�ponses: 1
    Dernier message: 21/08/2007, 11h12
  2. compr�hension de code (passage � une autre page)
    Par kokokaine dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 04/05/2007, 11h02
  3. R�ponses: 3
    Dernier message: 12/01/2007, 09h42
  4. [VB-Access]recset! Pb de compr�hension de code
    Par sk8bcn dans le forum VBA Access
    R�ponses: 5
    Dernier message: 15/12/2006, 15h26
  5. Compr�hension du code
    Par Ivanelis dans le forum Assembleur
    R�ponses: 3
    Dernier message: 12/06/2006, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo