Définition dynamique de variable
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:
Code:
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);
...
...
...
} |
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.
Une solution serai de définir 2 objets Array1 de vtkStringArray et Array2 de vtkDataArray et faire ceci dans ma boucle for:
Code:
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);
...
...
...
} |
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.
Est ce qu'il existe une solution qui me permettera d'éliminer le if dans ma boucle for ?
Merci