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 :

Problèmes de conversions.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par défaut Problèmes de conversions.
    Bonjour à tous, j'aimerais savoir quel serait le meilleur moyen de définir mes types de façon à avoir les conversions que je souhaite.

    Soit une classe template Matrix possédant 6 types d'iterateur :
    -normal_iterator (ne garantit que de pouvoir accéder aux cases à toutes les cases mais ne garantit pas l'ordre).
    -const_normal_iterator
    -lign_iterator
    -const_lign_iterator
    -column_iterator
    -const column_iterator

    Existe-t'il un moyen qui demande le moins de code possible (plus il y a de code, plus les évolutions sont difficiles), de permettre à ces conversions :

    -Il n'existe aucun lien entre deux iterators (qu'ils soient lign, const, column, ou normal) qui ne viennent pas de la même classe matrice (pas les même template).
    -On peut comparer deux iterators (operator ==, !=) mais pas les operator < ou >.
    -Les conversions iterator->normal_iterator ou const_normal_iterator sont implicites.
    -Les conversions qqch_iterator->const_qqch_iterator sont implicites
    -Les conversions normal_iterator->qqch_iterator ou const_qqch_iterator sont explicites.
    -Les conversions const_normal_iterator->const_qqch_iterator sont explicites.
    -Il existe les operator +,-,+=,-=,... sur tous les iterators.
    -Conversion explicite pointeur<->iterator
    -J'ai peut être oublier qqch.

    Aujourd'hui, j'ai définit tous ces nested à la main, avec toutes leurs fonctions (assez énorme : environ 30 par iterator) et sa me donne :

    -un header illisible.
    -un inl illisible.
    -une galère quand je veux rajouter une classe de politique à ma classe Matrix.
    -une galère si je veux modifier quoi que ce soit.

    Je vous demande donc votre point de vue :

    -Est-ce que certains de mes iterator peuvent-ils devenir des typedefs ?
    -Si oui, lesquels, si non y a t-il plus simple ?

    Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Bonjour,

    Toujours pas de réponse après 24h. Je pense que ta question est large et fait peur. En tout cas c'est l'effet qu'elle m'a fait hier quand je l'ai lue.

    Bon je me risque à donner mon avis, même s'il ne répond pas à la question

    Je crois qu'il existe dans tout programme un peu compliqué, des structures de bas-niveau qui sont complexes à écrire et à maintenir, et pour lesquelles la meilleure stratégie de dev consiste à les peaufiner et à ne plus y revenir.

    J'insiste sur le "bas-niveau". Il faut que la fonctionnalité de ces structures soit non-équivoque et peu sujet à évolution.

    Est-ce que ta classe Matrix ne fait-elle pas partie de ces structures-là ?

    -une galère quand je veux rajouter une classe de politique à ma classe Matrix.
    Pourquoi ?

  3. #3
    Membre éprouvé Avatar de Nhaps
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2011
    Messages : 350
    Par défaut
    Personellement, hier j'ai cru tombé face à un devoir. Et j'ai eu plus que trés peur !

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Par défaut
    Personellement, hier j'ai cru tombé face à un devoir. Et j'ai eu plus que trés peur !
    Non, ce n'est pas un devoir.

    Est-ce que ta classe Matrix ne fait-elle pas partie de ces structures-là ?
    Oui, disons que je souhaite avoir une classe Matrix pour mes différents projets qui réponde à mes besoin tout en étant facile d'utilisation (pas forcément en performances).

    Pourquoi ?
    Parce que dans les .inl, je suis obligé de spécifier les template de la classe matrix. En plus, si on imagine que je veuille rajouter de nouveaux types d'iterator (reverse_iterator), j'en aurait pour en temps assez énorme.

    Conclusion : Les conversions en c++, c'est horrible quand on veut faire quelque chose de compliquer !

  5. #5
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Peut-être un peu hors sujet, mais pourquoi ne pas utiliser la notion de matrice qui existe dans LAPACK++, surtout que du coup tu profites de toutes les méthodes de manipulation de matrice. Il y a un équivalent (basée dessus) dans Boost également.

  6. #6
    Membre chevronné
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Par défaut
    Re-bonjour,

    Si tu lis les headers de la stl, tu verras que c'est le même problème.
    Mais de fait, cela fonctionne bien parce qu'on n'y touche jamais.

    Je ne pense pas qu'il y ait de solution particulièrement élégante (au sens : non-verbeuse) à des problèmes de briques de bases omnipotentes et ultra-réutilisables comme celle que tu veux faire.

    En tout cas je n'en ai pas. Je serais ravi d'avoir tors.

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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