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 :

Pointeur abstrait absolu


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut Pointeur abstrait absolu
    Bonsoir à tous,

    Dans ma petite application qui gère des plugins, j'ai eu dans l'idée première de créer une architecture assez souple pour ne pas avoir besoin d'être recompilée à chaque ajout d'un plugin.
    Dans cette optique j'ai essayé de créer un conteneur possédant un pointeur vers n'importe quel objet dispo dans mes plugins. En commençant avec un joli void* (faut bien commencer quelque part ... autant que ça soit dans le mur ), je me suis rendu compte que le delete void* ne passait pas forcément très bien ... j'ai donc opté pour une classe de base ne possédant qu'un constructeur vide et un destructeur virtuel. Bien évidemment avec mes gros doigts j'ai fait un peu de temps en temps de cast implicite sur des objets n'ayant un peu rien à voir (du genre des fenêtres SFML) et à la fin BAM, non pas des chocapics, mais un joli mais prévisible HEAP CORRUPTION

    Alors là du coup j'ai 2-3 choix qui s'offrent à moi : re du void* en castant correctement quand il faut faire les delete, ce qui allourdit pas mal mon usine à gaz, ou passer par des conteneurs tout faits STL (s'il en existe).

    Please Help

  2. #2
    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 : 50
    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
    Par défaut
    Citation Envoyé par Captain_JS Voir le message
    j'ai donc opté pour une classe de base ne possédant qu'un constructeur vide et un destructeur virtuel. Bien évidemment avec mes gros doigts j'ai fait un peu de temps en temps de cast implicite sur des objets n'ayant un peu rien à voir
    Pourquoi cette classe de base, au lieu de n'avoir que constructeur/destructeur et donc de demander des casts (explicites, je ne vois pas trop où tu as pu avoir des casts implicites gênants) pour pouvoir être utilisée, ne contiendrait-elle pas toute l'interface de communication entre ton programme principal et ton plug-in, de manière à n'avoir aucun cast à faire ?
    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.

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Le problème est que cette classe de base est un peu un fourre-tout, et les communications ne sont pas les mêmes d'un plugin à un autre. Le but est même que les plugins puissent couvrir un périmètre maximum d'objets connus (type SFML, Qt, wxWidgets) ou custom (ces exemples sont des interfaces graphiques mais ce n'est pas exhaustif, on pourrait y trouver des "objets fmod" ou d'autres bibliothèques)

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Pourquoi tu n'utilises pas quelque chose dans le genre de boost.any ?

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Fondamentalement, un peu comme JolyLoic j'ai l'impression, je ne vois pas trop pourquoi tu ne peux avoir une classe interface abstraite de laquelle pourrait dériver tes plugins ?
    Sinon, tu peux mettre en oeuvre un pimpl idiom pour séparer l'interface exposée et le fourre-tout de tes différents plugin ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Par défaut
    Au début j'avoues que Boost m'effrayait un peu du fait du nombre de possibilités offertes par les librairies, mais boost::any convient parfaitement à ce que je veux faire.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/06/2011, 22h14
  2. Pointeur sur structure abstraite
    Par User Name dans le forum Débuter
    Réponses: 8
    Dernier message: 08/04/2011, 19h54
  3. Réponses: 2
    Dernier message: 30/12/2009, 20h44
  4. Réponses: 26
    Dernier message: 10/01/2008, 22h37
  5. polymorphisme, pointeurs et classes abstraites
    Par legend666 dans le forum C++
    Réponses: 10
    Dernier message: 02/11/2005, 16h44

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