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

Langage C++ Discussion :

[Langage] Croissement de headers


Sujet :

Langage C++

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Par défaut [Langage] Croissement de headers
    Bonjour

    J'ai une question qui me paraît toute bête mais je n'arrives pas à trouver de solution.

    Voici un exemple quelconque pour illustrer mon problème. Prenons une classe Vector et une classe Matrix. On a donc la déclaration de la classe Matrix dans un header Matrix.h et la déclaration de la classe Vector dans un fichier Vector.h.

    Maintenant imaginons que l'on souhaite créer deux méthodes de conversions. Par exemple les deux méthodes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Matrix Vector::convertToMatrix() // Converti un vecteur en une matrice
     Vector Matrix::convertToVector() // Converti une matrice en un vecteur
    Mon problème que je n'arrives pas trop à résoudre est le suivant. Pour pouvoir créer ces méthodes, il faut inclure le header Matrix.h dans le header Vector.h (afin que dans la déclaration de la méthode convertToMatrix() le type de retour Matrix soit connu). Mais il faut faire la méme chose pour une Matrice. Il faut inclure le header Vector.h dans le header Matrix.h (pour que le type de retour Vector soit définit).

    Mais un header A qui inclut un header B qui inclut un header A pose un peu un problème non.

    Comment peut-on résoudre ce problème ?

    Merci d'avance de votre réponse.

  2. #2
    Membre expérimenté Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par défaut
    Bonjour
    Il y a plusieurs manières de résoudre un tel problème:
    • Utiliser un constructeur de vecteur a partir d'une matrice(ou l'inverse)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      Matrix Vector::convertToMatrix() // Converti un vecteur en une matrice
      Vector::Vector(const Matrix&) // Converti une matrice en un vecteur




    La troisième méthode et la moins conseillé je pense, mais c'est celle qui te permet de garder a l'identique tes méthodes actuel.
    Dans les deux autres, il faudra définir si c'est le vecteur qui connait la matrice ou l'inverse... je ne saurait dire...

  3. #3
    Membre chevronné
    Avatar de Florian Goo
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    680
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 680
    Par défaut
    Bonjour,

    C'est avant tout un problème de conception.
    Un vecteur étant plus « bas niveau » qu'une matrice (en somme, une matrice est composée de plusieurs vecteurs), c'est la classe Matrix qui doit être dépendante de la classe Vector et non l'inverse. En fait, la classe Vector ne devrait même pas connaître la classe Matrix.

    Une solution correcte serait donc, d'un côté un constructeur de matrice à partir d'un vecteur, et de l'autre une fonction (libre ou non, statique ou non) de conversion vecteur -> matrice. Quoi qu'il en soit, rien de tel dans la classe Vector.
    Cours : Initiation à CMake
    Projet : Scalpel, bibliothèque d'analyse de code source C++ (développement en cours)
    Ce message a été tapé avec un clavier en disposition bépo.

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 32
    Par défaut
    Ok je comprends mieux. Merci beaucoup pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP] absence du Accept-langage header
    Par Snivel dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/04/2006, 11h07
  2. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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