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 :

Eigen déclaration de Matrix en extern


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Eigen déclaration de Matrix en extern
    Bonjour à tous et merci d'avance à tout ceux qui daigneront apporter une réponse à ma question.

    Mon problème concerne la biblio Eigen,

    Je suis ds un cas ou j'aimerais déclarer plusieurs matrice hors du main.cpp, je crée donc 2 fichiers l'un .ccp l'autre .h
    Je déclare ma matrice ds un .h ainsi

    extern Eigen::Matrix <double,Dynamic,2> D;

    et de même sur le .cpp

    Matrix <double,Dynamic,2> D;

    je link mon .h à mon main.cpp et mon nouveau.cpp.
    et malgré celà je n'arrive pas a accéder à la variable par le main.

    J'ai constaté que cela fonctionnait très bien du moment qu'aucun paramètre n'était dynamique ... mais aucun intérêt pour moi, les dim de la matrice évolue ds l'algo.

    Merci d'avance pour vos réponses.

    Environnement windows vista
    compilateur code::Blocks

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    Citation Envoyé par theokoles Voir le message
    Je suis ds un cas ou j'aimerais déclarer plusieurs matrice hors du main.cpp. je crée donc 2 fichiers l'un .ccp l'autre .h
    Tu cherches visiblement à utiliser des variables globales. En général, les variables globales se déclarent justement dans le main.cpp. En général aussi, les variables globales sont une mauvaise idée et ne se déclarent pas du tout. Toi tu cherches les problèmes

    Il existe certainement une manière "propre" de faire ce que tu cherches. Peux tu nous en dire plus pour qu'on puisse t'orienter ?
    Find me on github

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse rapide !

    Il est vrai que c'est des variables globales. donc il serrait plus intéressant de le définir ds le main comme tu dis

    J'ai envi de faire ainsi pour deux raisons ^^

    - 1 - j'ai plusieurs de variables "Matrix" globales -> assez moche de tout laisser ds le main
    - 2 - c'est que j'appelle c'est variables dans d'autre fichiers .cpp qui contienne des fonctions que j'appelle ds le main ( en espérant être claire ^^)

    Je sais que la manière propre pour des variables simples (type double, int etc) est de définir en extern ds le .h et initialiser ds le .cpp.

    Là ds le cas des Matrix de Eigen ça marche pas trop :/ sauf si la matrice est static.

    En espérant avoir été plus clair et merci pour la réponse

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par theokoles Voir le message
    - 1 - j'ai plusieurs de variables "Matrix" globales -> assez moche de tout laisser ds le main
    Ca ne prend qu'une ligne à déclarer, pas de quoi fouetter un chat.

    Citation Envoyé par theokoles Voir le message
    - 2 - c'est que j'appelle c'est variables dans d'autre fichiers .cpp qui contienne des fonctions que j'appelle ds le main ( en espérant être claire ^^)
    Et le passage par référence, tu y as pensé ? Il te suffit de passer par référence tes matrices aux fonctions qui s'en servent. Tu dois à chaque passer plein de matrices ? Utilise un objet pour stocker des références à ces matrices et passe le par référence. Je peux te donner de l'aide si tu ne trouves pas comment faire.

    En tout cas, tu n'as pas besoin de variables globales pour le besoin que tu décris.
    Find me on github

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui j'y ai pensé en effet, c'est juste que ma fonction n'a aucun paramètre et ne renvoie rien.

    void fontion ();

    et que je n'ai pas trop envi d'y toucher même s'il suffit juste d'ajouter en paramètres les éléments

    ça reste une solution en tout cas ^^
    Mais j'aimerais explorer d'autres issues, si tu as d'autre idées je suis preneur

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par theokoles Voir le message
    Oui j'y ai pensé en effet, c'est juste que ma fonction n'a aucun paramètre et ne renvoie rien.
    Et alors ?

    Citation Envoyé par theokoles Voir le message
    et que je n'ai pas trop envi d'y toucher
    Désolé mais ce n'est pas vraiment un argument. J'ai l'impression qu'il y a quelque chose que tu ne veux pas dire. Pourquoi ne pas vouloir y toucher, qu'est ce que ça peut faire ? Si tu n'est pas prêt à changer la signature d'une fonction, qu'es-tu prêt à changer ?
    Find me on github

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    j'ai une vingtaine de matrices à mettre en paramètre de fonction, je trouve ça un peu lourd.

    J'essaye seulement de comprendre pourquoi extern fonctionne bien avec une matrice statique et pas avec une dynamique ...

    Je te remercie d'ailleurs pour ton aide, mais ce que tu proposes revient à éviter la compréhension du problème en y trouvant une solution.
    Mais si je pouvais à la fois comprendre d'ou vient le problème et avoir une solution alternative pour le contourner serrait mieux pour moi

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Je t'en propose une qui répond à ton problème de 20 matrices, qui s'appelle le pattern Parameter Object. Je peux te montrer un exemple si tu ne sais pas faire.

    Du reste, une variable globale est nécessairement statique. Si tu veux un accès global et une allocation dynamique, il faut utiliser un pointeur.
    Find me on github

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Points : 119
    Points
    119
    Par défaut quantlib et boost !
    hello. pour tout ce qui est relatif au valeurs et vecteurs de eigen, quantlib utilisé avec boost propose des classes très simples d'utilisation.

    voici un exemple sur mon p'tit blog : http://quantcorner.wordpress.com/201...with-quantlib/

    édouard

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    Je crois que tu fais un amalgame : on parle bien de la librairie Eigen pas des eigen values.

    NB: Je ne vois pas de Boost dans ton exemple sur ton blog ^^
    Find me on github

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Points : 119
    Points
    119
    Par défaut
    Ah ! oui oui tu as raison. amalgame

Discussions similaires

  1. Déclaration forward ou external non-satistaite
    Par Invité dans le forum Débuter
    Réponses: 12
    Dernier message: 13/07/2008, 11h04
  2. Réponses: 4
    Dernier message: 20/09/2007, 08h57
  3. Déclaration forward ou external non satisfaite
    Par manel77 dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 27/07/2007, 12h29
  4. déclaration de fonctions externes
    Par poukill dans le forum C++
    Réponses: 40
    Dernier message: 17/05/2006, 16h15
  5. Déclaration de classes et méthodes externes
    Par rulianf dans le forum C++
    Réponses: 6
    Dernier message: 15/09/2005, 15h26

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