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?