Bonsoir à tous,

Je dispose d'une classe A, qui contient un vecteur d'objets de classe B. Sauf que cette classe B est une classe template utilisée pour envoyer des données à un shader.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class A
{
    private:
        std::vector<B<T> > monVecteur; // Problème
};
Je connais à l'avance les types avec lesquels la classe B peut-être instanciée : il s'agit en fait de tous les types de données que l'on peut envoyer à la carte graphique.

Ceci étant dit, boost::variant m'est donc apparue comme la solution idéale et, en fait, fonctionne plutôt bien. Le soucis c'est que je peux envoyer plus de types que la limite me le permet (la constante BOOST_VARIANT_LIMIT_TYPES) : float, int, uint, vec2, vec3, vec4, mat2x2, mat3x3, mat4x4, sampler2D, sampler3D... bref je dépasse la limite).

Mes questions : il y a t-il un moyen de surmonter la limite (car, en fait, mes types sont vraiment connus à l'avance, et je suis sûr qu'il n'y en aura pas d'autres), ou alors si vous avez une autre idée de design, même si celui que j'ai est très trsèc ommode à utiliser.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class A
{
    private:
        std::vector<B <boost::variant<float, int, ...> > > monVecteur; // Génial tant que je dépasse pas la limite
};
Mirci !