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ème de conception


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Par défaut Problème de conception
    Bonjour à tous,

    Voilà je bloque sur un problème de conception et je me dis que peut-être les talents présents sur le forum vont pouvoir m'aider
    Je programme un émulateur donc la rapidité du code est quand même important même si je privilégie la lisibilité du code.

    Je gère 2 Interfaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Class IWordReadable
    {
        u32 readWord(u32 addr);
        u8  readUpperByte(u32 addr);  // typedef ReadByteFunction : u8 (*f) (u32)
        u8  readLowerByte(u32 addr);  // typedef ReadByteFunction : u8 (*f) (u32)
    }
     
    Class IByteReadable
    {
       u8 readByte(u32 addr);           // typedef ReadByteFunction : u8 (*f) (u32)
    }
    On a ensuite les devices qui implémente telle ou telle interface.
    Je voudrais ensuite par rapport à une adresse donnée aller taper directement la fonction ReadByteFunction correspondante.

    Biensûr la seule solution que j'ai trouvé est de passer par les pointeurs de fonctions de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    //device 1 implemente IWordReadable
    //device 2 implemente IByteReadable
     
    adressSpace[0x00000] = &device1->readUpperByte;
    adressSpace[0x00001] = &device1->readLowerByte;
    adressSpace[0x00002] = &device2->readByte;
    adressSpace[0x00003] = &device2->readByte;
    J'aurai voulu éviter de passer par des pointeurs de fonctions et mettre dans le tableau directement des pointeurs sur objets mais le problème c'est que pour une device implémentant IWordReadable il y'a 2 fonctions readBytes possible ce qui m'oblige à pointer à un niveau plus fin soit au niveau de la fonction.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470
    Par défaut
    Un entier 32bits est composé de 4 octets.
    Donc "readUpperByte" et "readLowerByte" ne permettent pas de lire toutes les données.

    J'ai l'impression que votre conception est assez confuse.

    Je pense qu'il faut commencer par le modèle de l'API que vous voulez donner au code utilisateur des ces classes.

    Je ne vois pas comment correctement utilise votre "IWordReadable".

    Avez-vous un exemple de code utilisateur ?

Discussions similaires

  1. Méthode Finalize et problème de conception
    Par phryos dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2006, 11h04
  2. [VB6][UserControl et OCX]Problème de conception
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/01/2006, 22h37
  3. Petit problème de conception sur access
    Par coooookinette dans le forum Modélisation
    Réponses: 3
    Dernier message: 18/12/2005, 18h24
  4. Gestion des départements problème de conception
    Par snoopy69 dans le forum Modélisation
    Réponses: 7
    Dernier message: 11/10/2005, 13h08
  5. Problème de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/05/2004, 23h13

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