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

Boost C++ Discussion :

probleme de surcharge...


Sujet :

Boost C++

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Points : 45
    Points
    45
    Par défaut probleme de surcharge...
    Bonjour,

    je réalise dans la ligne de code suivante des multiplication membre à membre de matrices ainsi que des multiplications par des scalaires de matrices....
    voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    M_x_M_s2 = M_Z*element_prod(M_x_M_s,M_x_M_s);

    et voilà le message d'erreur que j'obtiens :

    >c:\documents and settings\xx\mes documents\visual studio 2008\projects\fretting\fretting\fretting_substress.cpp(1048) : error C2666: 'boost::numeric::ublas::operator *' : les 2 surcharges ont des conversions similaires

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Quels sont les types de M_Z et M_x_M_s ?

    Quelle est la suite du message d'erreur ?

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Points : 45
    Points
    45
    Par défaut
    M_Z et M_x_Ms et M_x_M_s2 sont des matrix

    et voilà le message complet :

    c:\documents and settings\xx\mes documents\visual studio 2008\projects\fretting\fretting\fretting_substress.cpp(1048) : error C2666: 'boost::numeric::ublas::operator *' : les 2 surcharges ont des conversions similaires
    1> c:\program files\boost\boost_1_36_0\boost\numeric\ublas\matrix_expression.hpp(3377): peut être 'boost::numeric::ublas::matrix_binary_scalar2<E1,E2,F> boost::numeric::ublas::operator *<C,boost::numeric::ublas::matrix_binary<E1,boost::numeric::ublas::matrix<T>,boost::numeric::ublas::scalar_multiplies<T1,T2>>>(const boost::numeric::ublas::matrix_expression<E> &,const boost::numeric::ublas::matrix_binary<E1,boost::numeric::ublas::matrix<T>,boost::numeric::ublas::scalar_multiplies<T1,T2>> &)'
    1> with
    1> [
    1> E1=boost::numeric::ublas::matrix<double>,
    1> E2=const boost::numeric::ublas::matrix_binary<boost::numeric::ublas::matrix<double>,boost::numeric::ublas::matrix<double>,boost::numeric::ublas::scalar_multiplies<double,double>>,
    1> F=boost::numeric::ublas::scalar_multiplies<double,boost::numeric::ublas::matrix_binary<boost::numeric::ublas::matrix<double>,boost::numeric::ublas::matrix<double>,boost::numeric::ublas::scalar_multiplies<double,double>>>,
    1> C=boost::numeric::ublas::matrix<double>,
    1> T=double,
    1> T1=double,
    1> T2=double,
    1> E=boost::numeric::ublas::matrix<double>
    1> ]
    1> c:\program files\boost\boost_1_36_0\boost\numeric\ublas\matrix_expression.hpp(2944): ou 'boost::numeric::ublas::matrix_binary_scalar1<E1,E2,F> boost::numeric::ublas::operator *<boost::numeric::ublas::matrix<T>,boost::numeric::ublas::matrix_binary<boost::numeric::ublas::matrix<T>,boost::numeric::ublas::matrix<T>,boost::numeric::ublas::scalar_multiplies<T1,T2>>>(const boost::numeric::ublas::matrix<T> &,const boost::numeric::ublas::matrix_expression<E> &)'
    1> with
    1> [
    1> E1=const boost::numeric::ublas::matrix<double>,
    1> E2=boost::numeric::ublas::matrix_binary<boost::numeric::ublas::matrix<double>,boost::numeric::ublas::matrix<double>,boost::numeric::ublas::scalar_multiplies<double,double>>,
    1> F=boost::numeric::ublas::scalar_multiplies<boost::numeric::ublas::matrix<double>,double>,
    1> T=double,
    1> T1=double,
    1> T2=double,
    1> E=boost::numeric::ublas::matrix_binary<boost::numeric::ublas::matrix<double>,boost::numeric::ublas::matrix<double>,boost::numeric::ublas::scalar_multiplies<double,double>>
    1> ]
    1> lors de la tentative de mise en correspondance de la liste des arguments '(boost::numeric::ublas::matrix<T>, boost::numeric::ublas::matrix_binary<E1,E2,F>)'
    1> with
    1> [
    1> T=double
    1> ]
    1> and
    1> [
    1> E1=boost::numeric::ublas::matrix<double>,
    1> E2=boost::numeric::ublas::matrix<double>,
    1> F=boost::numeric::ublas::scalar_multiplies<double,double>
    1> ]
    je comprend pas bien ce que sont les matrix_binary_scalar1 ou matrix_binary_scalar2.
    Quel est l'interêt d'utiliser ce genre de type ?
    Sinon je pense que la solution de correction consiste à utiliser ce type plutôt que le simple type matrix ??
    J'attend vos réponses, merci !

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Visiblement, l'opérateur * permet uniquement de multiplier une matrice par un scalaire. Une multiplication matrice/matrice doit se faire autrement (prod ?).

    Maintenant, expliquer les matrix_binary_scalar1 ou matrix_binary demanderait trop de boulot... Recherche "expression template" pour avoir plus d'informations.

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    +1
    Dans l'overview de Boost.uBLAS :
    We decided to use no operator overloading for the following other primitives:

    Description Function
    Left multiplication of vectors with a matrix vector_expression prod<vector_type > (const matrix_expression &, const vector_expression &);
    vector_expression prod (const matrix_expression &, const vector_expression &);
    Right multiplication of vectors with a matrix vector_expression prod<vector_type > (const vector_expression &, const matrix_expression &);
    vector_expression prod (const vector_expression &, const matrix_expression &);
    Multiplication of matrices matrix_expression prod<matrix_type > (const matrix_expression &, const matrix_expression &);
    matrix_expression prod (const matrix_expression &, const matrix_expression &);

    Inner product of vectors scalar_expression inner_prod (const vector_expression &, const vector_expression &);
    Outer product of vectors matrix_expression outer_prod (const vector_expression &, const vector_expression &);
    Transpose of a matrix matrix_expression trans (const matrix_expression &);

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Points : 45
    Points
    45
    Par défaut
    ok merci, c'est resolu.

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

Discussions similaires

  1. Probleme de surcharge operateur +
    Par Nono Sto dans le forum Débuter
    Réponses: 9
    Dernier message: 06/02/2011, 00h43
  2. Obtention de i trema probleme de surcharge
    Par samouille666 dans le forum Débuter
    Réponses: 15
    Dernier message: 26/10/2009, 04h30
  3. [POO] Probleme de surcharge d'operateur
    Par wawa84 dans le forum C++
    Réponses: 2
    Dernier message: 19/10/2008, 20h52
  4. Probleme de surcharge d'operator<<
    Par Linu6 dans le forum C++
    Réponses: 11
    Dernier message: 14/06/2008, 13h17
  5. Probleme de surcharge de flux
    Par BigBeni dans le forum C++
    Réponses: 20
    Dernier message: 01/05/2006, 19h10

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