2011-03-03 6 views
0

J'ai construit une struct dans une classe C++, Lets assis, il est appelé la tâcheStructure C++, construction noms dynamiques

Je voudrais lancer un nouveau construit sur la base d'un indice qui pourrait changer à chaque fois que je lance le programme, par exemple

for (i=1; i<=index,++i){ 

Task ai; 
} 

cette façon après la boucle, je voudrais avoir des structures nommées a1, a2, a3, a4, ... un

Comment puis-je ajouter le numéro i à la fin de le nom en tant que partie de celui-ci.

+2

Je pense que vous voulez un tableau. – Marlon

+0

+1. Il y a probablement quelques façons de faire ce genre de choses avec le préprocesseur, mais les tableaux sont la solution. – 0xC0000022L

Répondre

0

Comme mentionné, vous pouvez utiliser un std::vector<Task>, bien que je probablement utiliser un tableau alloué dynamiquement: créer

Task* tasks = new Task[index]; 
task[0] ... 
task[1] ... 

delete[] tasks; 
+2

Un vecteur * est * un tableau alloué dynamiquement, avec les soucis de propriété abstraits du programmeur sans méfiance! –

+0

C'est vrai! :) – Marlon

0

Utilisez un std :: vecteur < Tâche> ai et l'ajouter au vecteur. Cela résoudrait le problème de l'indice variable aussi.

+0

std :: vecteur < Task > * ai = nouveau vecteur < Task >(); pour (i = 0; i push_back (structure de tâche); } – Raja

+0

Pourquoi dans le monde voudriez-vous allouer dynamiquement un vecteur? –

+0

Ce code n'est pas valide et il n'est pas nécessaire d'allouer dynamiquement. Ne pas mentionner à plusieurs reprises de repousser est inefficace, et inutile lorsque vous connaissez la taille à l'avance. Essayez 'std :: vector ai (index);' –

1

C++ n'a pas de réflexion, de sorte que vous ne pouvez pas dynamiquement les noms de variables comme celui-ci. Cependant, les tableaux/vecteurs sont utiles ici:

std::vector<Task> tasks(ai); // a vector of ai x Task objects