Bonjour
J'ai un petit problème avec une structure Vector que je suis en train de faire. J'ai donc une structure Vector :
J'ai également une structure Vector2D qui hérite de ma structure Vector :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 struct Vector { private : ... public : ... double getNorm() const; Vector * getUnitVector() const; };
Dans la structure Vector se trouve une méthode getUnitVector() qui retourne un vecteur unitaire correspondant au vecteur interne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct Vector2D : public Vector { private : .... public : .... };
Mon problème est que j'aimerais avoir une expression du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Vector * Vector::getUnitVector() { // Create the unit length vector Vector * unitVector = (1.0 / this->getNorm()) * this; // Return the unit length vector return unitVector; }
Le problème est que la méthode getUnitVector() se trouve dans la classe Vector et retourne donc un pointeur Vector * et donc la deuxième instruction pose problème car un Vector * ne peut pas être assigné à un Vector2D *. Il faudrait ici un "dynamic cast". Mais je ne trouve pas vraiment beau d'utiliser dynamic cast et j'imagine qu'il doit exister quelque chose de beaucoup plus propre pour ce genre de problème qui me parait assez classique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Vector2D * vect = new Vector2D(); Vector2D * vect2 = vect->getUnitVector();
Si quelqu'un saurait comment si prendre dans ce genre de situation.
Partager