Templates et tableau générique

Templates et tableau générique - C++ - Programmation

Marsh Posté le 13-08-2010 à 17:31:08    

Bonjour à tous  :hello:  :hello: ,
 
après avoir cherché sur internet et sans avoir trouver de réponse que je comprenne, je fais appel à votre savoir.
 
J'ai des classes A, B,C...  ayant toutes la même fonction membre "fonc" et je voudrais les mettre dans un tableau tab, de sorte à pouvoir faire quelque chose dans ce genre là:
         boucle sur i
               tab[i].fonc()
 
Je vous demande cela car je code en CUDA et que je n'ai pas le droit à tout cela:
-les pointeurs de fonction
-les fonctions virtuelles
-les templates de foncion
Je peux par contre utiliser cela:
+les foncteurs (surcharge de l'opérateur "()" )
+l'héritage des classes
+les templates
 
Si vous avez des idées, car là je bloque :)
 


---------------
ACH/VDS - FeedBack
Reply

Marsh Posté le 13-08-2010 à 17:31:08   

Reply

Marsh Posté le 14-08-2010 à 10:11:59    

Je n'ai aucune idée des contraintes imposées par CUDA.
 
Un tableau est toujours homogène, donc tu ne peux pas mettre des instances de classes différentes dedans.  Ce que tu peux faire, c'est mettre des pointeurs vers une classe de base.  Si tu veux absolument utiliser la syntaxe avec .fonc(), il faut passer par une classe proxy qui va encapsuler le pointeur.  Si tu n'as pas une classe de base adéquate (qui te fournit le membre fonc), il te faut aussi encapsuler cela (technique appelée type erasure).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 14-08-2010 à 21:19:31    

CUDA a un support abyssale de C++ :/  
Apres, je comprends pas ton use case qui ne correpsdont pas au code que CUDA aime exécuté ...

Reply

Marsh Posté le 15-08-2010 à 17:31:44    

Je plussoie Joel F
 
Tu devrais approcher ton problème d'une autre manière :
 
au lieu d'avoir un gros tas d'objets avec des appels virtuels, tu ferais mieux de trier au préalable tes objets et de séparer ca en N batch différents qui correspondent à tes N implémentations de ta méthode virtuelle, et ensuite, il te reste juste chaque ensemble à traiter "bêtement" (avec l'économie des branchements en fonction du type, du coup)


---------------
last.fm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed