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 :

Pb de design


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Septembre 2003
    Messages
    49
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Par d�faut Pb de design
    Bonjour a tous.
    Soit la classe suivante (qui n'a rien a voir avec std ostream):

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    class OStream
    {
    	public:
    		OStream() throw();
    		.../...
     
    		virtual void Put(int);
    		virtual void Put(char);
    		virtual void Put(long);
    		.../...
     
    		OStream& operator << (int);
    		OStream& operator << (char);
    		OStream& operator << (long);
     
    	protected:
    	private:
    };
    Maintenant voici le pb:
    je voudrai creer une classe (disons Filter) qui agit comme un plug-in, et ainsi je pourrai ecrire une expression du genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    OStream() << L"text " << MyFilter() << 10;
    o� MyFiler est une derivee de la classe Filter.

    Qlqn aurait une idee a me proposer concernat cette class Filter.
    Merci

  2. #2
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Puisque tu sembles vouloir r�inventer la STL, inspire t'en. Regarde comment sont g�r�s les manipulateurs notamment.

    Tu pourras peut-�tre trouver des infos ici :
    http://www.angelikalanger.com/Articles/Topics.html#CPP

  3. #3
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    OStream() << L"text " << MyFilter() << 10;
    Si tu passes des param�tres � MyFilter, �a serait plus simple...
    Ca donnerait qqch du genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    OStream() << MyFilter("text")<<10;
    A++

  4. #4
    Membre confirm�
    Inscrit en
    Septembre 2003
    Messages
    49
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Par d�faut
    Merci
    Citation Envoy� par Loulou24
    Puisque tu sembles vouloir r�inventer la STL, inspire t'en. Regarde comment sont g�r�s les manipulateurs notamment.
    Ile ne s'agit en rien des stream de stl (sauf peut etre le nom). et les manip. de l'STL sont des pointeurs sur des fonctions. ici il s'agit d'avoir une classe qui effectue des traitement complexes (un peu comme le modele Command).

    Citation Envoy� par reggae
    Si tu passes des param�tres � MyFilter, �a serait plus simple...
    Ok mais s'il on fait:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    OStream() << ../.. << MyFilter(10) << .../..
    cela implique l'existance d'un operator du genre:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    OStream& operator << (OStream&,const Filter&);
    et que les filtres derives soient comme suit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class MtFilter1 :public Filter
    {
    public:
     MyFilter1(int);
    .../...
    };
     
    class MyFilter2:public Filter
    {
    public:
     MyFilter2(char);
    .../...
    };
    Seulement la il nous est impossible d'utilser Filter d'une maniere dynamique (Considerez le cas ou ces filtres doivent etres charges a pratir une DLL).

  5. #5
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Ile ne s'agit en rien des stream de stl (sauf peut etre le nom). et les manip. de l'STL sont des pointeurs sur des fonctions. ici il s'agit d'avoir une classe qui effectue des traitement complexes (un peu comme le modele Command).
    Dans ce cas donne plus de pr�cisions : qu'est cens�e faire ta classe OStream, et que sont cens�s faire tes filtres ?

  6. #6
    Membre confirm�
    Inscrit en
    Septembre 2003
    Messages
    49
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Par d�faut
    La class OStream est une classe abstraite servant de base pour des classes plus epcialis�es:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Rectangle;
    class Text;
    class DC;
    class Icon;
    .../..
     
    class TyOStream
    {
       public:
          explicit OStream(DC&);
          virtual ~OStream();
     
          virtual OStream& operator <<(const Rectangle&);
          virtual OStream& operator <<(const Text&);
          virtual OStream& operator <<(const Icon&);
          .../...      
    };
    en realite les operateurs ne sont pas vituel mais font appel a des methodes poroteges de OStream qui sont elles virtuelles.

    Les filtes qd a eux sont partages en 2 categories:
    1-les manipulateurs: des objets qui changent l'etat du stream (SetFont,SetTextColor)
    2.les transformateurs: qui acceptent une entre X, la traitent et la reinjectent dans le stream.

    Dans tous les cas les filteres agissent uniquement sur entree suivant leur invocation.

    Merci de votre aide.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    R�ponses: 4
    Dernier message: 12/07/2006, 18h32
  3. [OpenTools, designer] CmtSubComponent et superClasse
    Par kainor dans le forum JBuilder
    R�ponses: 4
    Dernier message: 04/03/2003, 11h32
  4. R�ponses: 3
    Dernier message: 09/02/2003, 01h09
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    R�ponses: 4
    Dernier message: 12/08/2002, 11h21

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