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))
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 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; };
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
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; };
Je ne comprends pas pourquoi, ni comment contourner le problème... Avez-vous une explication ou une solution?
Partager