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

Langage C++ Discussion :

Défit : classe abstraite en paramètre d'une fonction


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut Défit : classe abstraite en paramètre d'une fonction
    Mon problème est le suivant :

    Je voudrais passer en paramètre à une fonction g, une fonction f qui prend en paramètre une classe abstraite. Ça coince à la compilation et je ne vois pas comment m'en sortir même en faisant appel aux templates.

    Voilà le code illustrant ce que je voudrais faire :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    #include <iostream>
     
    //---------------------------------
    class Obj {
    public:
    	Obj() {};
    	Obj(std::string data) {};
    	virtual ~Obj() = 0;
    	virtual std::string Data() = 0;
    };
     
    //---------------------------------
    class Son : public Obj {
    public:
    	Son(std::string data):_data(data) {};
    	~Son() {};
    	std::string Data() { return _data;}
    public:
    	std::string _data;
    };
     
    //---------------------------------
    typedef Obj* (Func)(Obj*);
     
    //---------------------------------
    Son * f(Son * son) {
    	return new Son("new " + son->Data());
    }
     
    //---------------------------------
    void g(Func func) {
    	Son son("data");
    	Son * newSon = func(&son);
    }
     
    //---------------------------------
    int main() {
    	g(f);
    	return 0;
    }
    Je suis prêt à utiliser la bibliothèque boost si cela permet de résoudre le problème.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template< typename Func > void g(Func func)
    Et puis passe &f aussi dans l'appel à g (même si f fonctionne).

    MAT.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Par défaut
    Merci pour ta réponse rapide !
    Cela permet effectivement la compilation du code ci-dessus.

    Pour être honnête, j'ai malencontreusement dénaturé mon problème en voulant trop le simplifier et la solution que tu proposes ne fonctionne pas pour mon problème original.

    Néanmoins en partant de ta réponse, et en utilisant dynamic_cast(), j'ai pu résoudre enfin mon problème.

    Encore merci !

Discussions similaires

  1. Property de class en paramètre d'une fonction.
    Par Oberown dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 07/02/2015, 13h52
  2. Problème avec paramètre d'une fonction (classe)
    Par clement.analogue dans le forum Langage
    Réponses: 8
    Dernier message: 23/03/2010, 08h13
  3. [Débutant]Passer une classe abstraite en paramètre
    Par Invité dans le forum Débuter
    Réponses: 2
    Dernier message: 06/01/2006, 17h56
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. Passer en paramètre d'une fonction (...)
    Par Captain_JS dans le forum C++
    Réponses: 5
    Dernier message: 03/11/2004, 07h18

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