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 polymorphisme : retour d'une classe abstraite


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieux du son
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieux du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Problème de polymorphisme : retour d'une classe abstraite
    Bonjour à vous,
    Je débute assez en programmation et j'ai un problème sur mon projet, je pense qu'une notion m'échappe, voici mon problème :

    Ma classe de base et ses deux dérivées (simplifiées légèrement pour l'occasion (suppression de données membres))
    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
     
    class NonLinearModel
    {
    	virtual void UseModel(const VectorXd& V_nl, VectorXd& I_nl, MatrixXd& J_nl) = 0;
    };
     
    class LookUpModel : public NonLinearModel
    {
    	virtual void UseModel(const VectorXd& V_nl, VectorXd& I_nl, MatrixXd& J_nl) = 0;
    };
     
    struct MathModel : public NonLinearModel
    {
    	virtual void UseModel(const VectorXd& V_nl, VectorXd& I_nl, MatrixXd& J_nl) = 0;
    	virtual LookUpModel BuildLookUpModel() = 0;
    };
    De ces classes abstraites je dérive mes modèles concrets comme par exemple :
    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
     
    class Diode_MathModel : public MathModel
    {
    public:
    	Diode_MathModel(DiodeModelType ModelType);
    	~Diode_MathModel(){}
     
    	void UseModel(const VectorXd& V_nl, VectorXd& I_nl, MatrixXd& J_nl);
    	LookUpModel BuildLookUpModel();
    };
     
    class Diode_LookUpModel : public LookUpModel
    {
    public:
    	Diode_LookUpModel(DiodeModelType ModelType);
    	~Diode_LookUpModel(){}
    	void UseModel(const VectorXd& V_nl, VectorXd& I_nl, MatrixXd& J_nl);
    protected:
    	DiodeModelType m_Type;
    };
    Pour la méthode : virtual LookUpModel BuildLookUpModel() = 0; Intellisense me dit : une fonction qui retourne une classe abstraite "LookUpModel" n'est pas autorisée : fonction "LookUpModel::UseModel" est une fonction virtuelle pure
    Je ne comprends pas pourquoi, ni comment contourner le problème... Avez-vous une explication ou une solution?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juillet 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2015
    Messages : 26
    Points : 35
    Points
    35
    Par défaut
    Si je me trompe pas, tu essayes de retourner un objet de type abstrait... Ce qui est impossible (je pense).
    Il me semble que tu dois soit retourner un type concret, soit un pointeur de type abstrait

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieux du son
    Inscrit en
    Février 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieux du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Ok merci bien pour cette réponse. Effectivement ça à l'air de mieux fonctionner. Maintenant ça pose d'autres problèmes plus loin dans mon code... je vais finalement abandonné le polymorphisme pour cette partie de mon projet!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/11/2009, 16h48
  2. Problème d'héritage avec une classe abstraite
    Par Ph.denis dans le forum C++
    Réponses: 7
    Dernier message: 22/03/2008, 10h37
  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: 2
    Dernier message: 27/03/2005, 16h09
  5. [Debutant] Une classe abstraite en parametre ?
    Par kiroukou dans le forum Débuter
    Réponses: 8
    Dernier message: 03/02/2005, 15h05

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