Bonjour,
Je suis confronté à un petit soucis avec le langage C++, je viens donc demander votre aide après avoir pas mal cherché sur le net :/.
Je travaille sur un moteur de jeu dans lequel j'ai une classe abstraite de base :
-> Drawable
Elle contient un tableau de Vertex, un Vertex étant un sommet contenant une couleur et une position.
Je travaille sur un moteur de particule, j'ai ma classe Emitter héritant de Drawable. Ma classe Emitter utilise des "Particle", il s'agit d'une classe héritant de Vertex, elle ajoute la vitesse de la particule ainsi que sa durée de vie.
Résumé 1 :
Drawable <- Emitter
Vertex <- Particle
Je souhaite donc tout bêtement stocker dans mon tableau de Vertex mes Particle, jusque là aucun soucis puisque Particle hérite de Vertex.
Le soucis apparait au moment où je souhaite transmettre mes particules aux "Modifier" (des classes permettant d'ajouter des effets aux particules). En effet, je dois transmettre mon tableau de vertex (std::vector<Vertex> vers std::vector<Particle>).
Pour résumer :
Je souhaite caster mon std::vector<Vertex> vers un std::vector<Particle> avant de l'envoyer aux modifiers, sachant que Particle hérite de Vertex.
Actuellement j'ai tenté plusieurs choses :
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector<Particle*> particles = std::vector<Particle*>(vertices.begin(), vertices.end());
Cannot initialize a parameter of type 'std::vector<Particle> *' with an rvalue of type 'std::vector<Vertex> *'Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 template <class F, class T> struct caster { T operator () (F n) { return (T)n; } }; template <class F, class T> void convert (const vector<F> &is, vector<T> *os) { insert_iterator<vector<T> > osins(*os, os->begin()); transform(is.begin(), is.end(), osins, caster<F,T>()); } // Puis : convert<Vertex, Particle>(vertices, &particles);No matching conversion for C-style cast from 'sx::Vertex' to 'sx:: Particle'
Voilà, le résumé de la situation, merci à celui/celle qui trouvera la force de m'aider. Merci d'avance.
Dono
Partager