Salut,
J'ai 2 classes vtkStringArray et vtkDataArray qui héritent d'une classe abstraite vtkAbstractArray.
J'aimerai définir un objet Array dont le type est soit vtkStringArray ou vtkDataArray. Le code ressemble à ceci:
Le problème est que la fonction getValue que je veux utiliser dans ma boucle for est défini dans vtkStringArray et vtkDataArray mais non pas dans vtkAbstractArray, ce qui fait en sorte que je ne peux pas utiliser un pointeur de type vtkAbstractArray pour résoudre le problème.
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 if(arrayType == "vtkStringArray") { // getStringArray() retourne un pointeur vers un objet vtkStringArray vtkStringArray *Array = getStringArray(); } else if(arrayType == "vtkDataArray") { vtkDataArray *Array = getDataArray(); } for(unsigned int i=0 ; i < 1000; i++) { // Ceci ne fonctionnera pas puisque segArray a été // défini dans une condition if et donc non reconnu ici Array->getValue(i); ... ... ... }
Une solution serai de définir 2 objets Array1 de vtkStringArray et Array2 de vtkDataArray et faire ceci dans ma boucle for:
Ceci résoudra le problème mais ajoutera une condition à ma boucle for et donc augmentera le temps d'excecution de mon programme d'un temps significative puisque le nombre d'itérations est souvent très grand.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 for(unsigned int i=0 ; i < 1000; i++) { if(Array1) Array1->getValue(i); else Array2->getValue(i); ... ... ... }
Est ce qu'il existe une solution qui me permettera d'éliminer le if dans ma boucle for ?
Merci
Partager