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 :

Classe Matrix<T>


Sujet :

C++

  1. #21
    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 : 49
    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
    Pour définir une conversion de A vers B :
    - Soit on défini dans B un constructeur : B(A const &a);
    - Soit on défini dans A un opérateur de conversion : B operator B();

    La deuxième solution est en général utilisée quand on n'a pas le droit de toucher au code de B (ou quand B n'est pas une classe...), ce qui n'est pas ton cas.

    Je persiste donc à préconiser le constructeur templaté.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
      0  0

  2. #22
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    encore toi jolyloic !

    je me réveille et découvre ta réponse.

    En fait je ne vois pas dans quelle mesure un constructeur peut palier mon pb puisque qu'il ne s'agit pas d'instancier un autre objet à partir d'un autre, si ?

    Mais ta proposition n°2 colle parfaitement à ce qui est demandé, en plus en parlant de B, je suis pas sûre de te suivre, ma conversion est la suivante:

    Matrix<T> en Matrix<U> soit par exemple:
    je déclare un Matrix<char> m dans mon code et l'envoie en tant que param dans ma fonction affiche(...) qui prend que des Matrix<double> m.

    donc mon B et mon A définisse la même classe Matrix<T> ...

    bref, c'est bien la numéro 2 qu'il me faut faire mais j'avoue ne pas savoir comment

    je sens que la journée va être dure ...
      0  0

  3. #23
    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 : 49
    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
    Citation Envoyé par coyotefunky
    encore toi jolyloic !

    je me réveille et découvre ta réponse.

    En fait je ne vois pas dans quelle mesure un constructeur peut palier mon pb puisque qu'il ne s'agit pas d'instancier un autre objet à partir d'un autre, si ?
    Qu'est-ce que convertir un objet, si ce n'est créer un objet temporaire d'un autre type à partir d'un objet initial ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class A
    {
      A(string s);
      // ...
    };
     
    void f(A const &a) {/*...*/}
     
    int main()
    {
      string s = "toto";
      f(s); // ça marche...
    }
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
      0  0

  4. #24
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    voici le code que j'ai écrit et qui semble bien marcher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    operator Matrix<double>() {
     
    Matrix<double> tmp;
     
    tmp.nb_lines = nb_lines;
    tmp.nb_columns = nb_columns;
     
    Vector<double> ** mat;
     
    return tmp;
    }
    oui mais voilà, la seule conversion prévue est Matrix<T> vers Matrix<double>
    et moi ce que je voudrais c'est une conversion de Matrix<T> vers une matrice de n'importe quoi (Matrix<U>) donc.

    Si j'écrit et remplace "double" par "U", le compilateur me dit qu'il ne connait pas U, et c'est bien vrai.
    Alors dois-je faire un opérateur de conversion pour tous les types int,double,float,char, ... ou y-a-t-il une belle manière de coder tout ça ?
      0  0

  5. #25
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    J'imagine que tu peux faire un operateur de conversion template.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template <class U> operator Matrix<U>()
    {
        // ...
    }
    Mais pourquoi tiens-tu absolument à ne pas utiliser un constructeur template, pour réaliser la conversion :
      0  0

  6. #26
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 14
    Points : 2
    Points
    2
    Par défaut
    lol,

    et oui je fais de la résistance, tout simplement parce que le sujet du projet me l'impose:
    "Ils" veulent un opérateur de conversion et rien d'autre.

    je viens de tester ton code et tout semble bien marcher maintenant.

    je vous remercie à tous pour votre aide et m'empresse avec joie de mettre en "résolu" ce post !!

    A plus tard !!
      0  0

  7. #27
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    bonjour,
    j'ai le même type de problème,
    je voudrais convertir un machin<T> en machin<U> avec un constructeur par copie alors j'ai fait:

    template <class U> Machin(const Machin<U> & m) {}

    sauf qu'il me faut aussi le contructeur par copie avec le type T (comme celui par defaut) donc j'ai rajouté :

    Machin(const Machin & m) (ou const Machin<T> & m qui fait pareil)

    mais il me dit que la fonction est déjà défini par la fonction du dessus.
    comment doit-je faire?

    merci

    ps: si quelqu'un pouvais m'expliquer aussi la différence entre template <class U> et template <typename U> merci.
      0  0

  8. #28
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    bonjour,

    pour chaque nouveau problème, un nouveau thread.
    tu peux reposer ta question dans un nouveau thread et mettre un lien vers celui-ci, mais ne fait pas remonter un sujet déjà résolu.

      0  0

Discussion fermée
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 13
    Dernier message: 10/12/2014, 17h11
  2. Réponses: 15
    Dernier message: 20/05/2014, 20h16
  3. Classe data Matrix
    Par toutounesan dans le forum VB.NET
    Réponses: 0
    Dernier message: 31/07/2011, 18h31
  4. classe avec membre matrix de taille 2*2
    Par manitor dans le forum Boost
    Réponses: 11
    Dernier message: 06/06/2009, 14h04
  5. [débutant][JSci][Matrix]comment utiliser cette classe
    Par Clark dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 10/05/2005, 10h40

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