2010-08-29 10 views
0

J'ai un ensemble de nombres dont j'ai besoin pour passer d'une fonction à quelques autres fonctions avant qu'elle ne soit réellement utilisée. J'ai pensé qu'un tableau est un bon moyen de le faire, mais je ne me souviens pas comment faire ce que je veux faire. Le code ressemble à ceciUtilisation d'une instruction for pour créer des variables à partir du réseau

int set1; // variables that hold settings 
int set2; 
int set3; 
cout << "Setting 1"; 
cin >> set1; 
cout << "Setting 2"; 
cin >> set2; 
cout << "Setting 3"; 
cin >> set3; 
int settings[3] = {set1, set2, set3}; //array that holds variables 

ainsi c'est ainsi que le tableau est créé.
Cependant, ce que j'espère est de pouvoir faire quelque chose comme ça, je sais que certaines langues peuvent le faire (je suis presque sûr), mais je ne sais pas si C++ peut, ou comment cette méthode est appelée. « t google)

int setting0; 
int setting1; 
int setting2; 
    for(int i=0; i<3; i++) 
    { 
      setting+i = setting[i]; // should set setting0 = setting[0]; etc 
    } 

vais-je sur ce dans le mauvais sens?

+0

Je sais que la boucle for est erronée, mais c'est ce que j'espère corriger. –

+0

Les noms de variables sont une construction à la compilation, ils n'existent pas à l'exécution. Votre meilleur pari est de faire de 'setting0-2' un tableau,' setting [2] '. – GManNickG

Répondre

0

Si les fonctions que vous appelez besoin de changer le contenu du tableau, changez votre tableau décl à ceci:

int *(settings[3]) = {&set1, &set2, &set3}; //array that holds pointers to variables 

Ensuite, changez votre boucle:

for(int i=0; i<3; i++) 
{ 
*(settings[i]) = setting[i]; // should set set1 = setting[0]; etc 
} 

Je ne sais pas si je compris votre question tout à fait raison ...

0

Vous ne pouvez pas référencer des variables à partir d'un nom calculé à l'exécution comme dans C++. Vos options sont soit pour passer le tableau lui-même directement à la fonction en question (ce qui est probablement la meilleure approche) ou de lier les variables manuellement au moment de la compilation:

// NOTE - this is ALMOST ALWAYS not the right thing to do! 
int setting0 = setting[0]; 
int setting1 = setting[1]; 
int setting2 = setting[2]; 
4

Il n'y a aucun moyen de le faire sans utiliser d'abord un array (ie, int set[3]), ou de faire quelque chose de plus compliqué que votre premier exemple.

Bien sûr, vous pouvez réécrire votre code, comme

int settings[3]; 
for (int i = 0; i < 3; ++i) 
{ 
    cout << "Setting " << i+1; 
    cin >> settings[i]; 
} 
0

Je pense que c'est la mauvaise approche. Si vous passez un tableau, pourquoi ne pas utiliser les valeurs dans le tableau?

Comme, au lieu de

printf("Hello %s",setting3); 

font

printf("Hello %s",setting[3]); 

ou si vous voulez être de fantaisie et d'utiliser un tableau associatif

printf("Hello %s",setting['first_name']); 
0

Désolé, ce fut une question stupide, Je dois faire une pause. Ce que je vais faire est mettre tous les cin >> réglage [0]; etc. Je ne sais pas ce que je pensais, puis-je le faire, lol.