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 505
    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 505
    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