[C++] - Concaténer variable dans nom variable
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
J'essaye actuellement d'instancier dynamiquement un certain nombre d'objets. Pour cela, je souhaite leur donner un nom avec un suffixe numérique.
J'ai trouvé des éléments de réponse sur ce forum, au dernier post.
J'ai donc essayé de l'adapter à mon code, ce qui donne ceci :
** Début du fichier **
** Dans le code, à l'endroit voulu **
C'est vrai qu'ici je n'en fait que deux, mais ça ne sera pas le cas partout ;)
Seulement, avec ça, le code compile mais ne lance jamais ma méthode saisirMatrice();
En fait, il ne fait même pas de deuxième passe et va directement à la fin du programme (ce qu'il n'est pas sensé faire).
Je cherche donc :
- Pourquoi ? (forcement, comme tout le monde ^^)
- S'il y a une autre solution pour concaténer la valeur d'une variable dans le nom d'une autre variable (c'est en fait tout ce que je veux)
Edit :
Voici quelques détails, lorsque je lance tout ça en mode debug :
- j'ai une fenêtre d'alerte, avec le contenu suivant :
- La backtrace confirme que la première matrice a bien été créée
Je suis ouvert à toute proposition.
Merci d'avance
J'essaye actuellement d'instancier dynamiquement un certain nombre d'objets. Pour cela, je souhaite leur donner un nom avec un suffixe numérique.
J'ai trouvé des éléments de réponse sur ce forum, au dernier post.
J'ai donc essayé de l'adapter à mon code, ce qui donne ceci :
** Début du fichier **
#define NOUVELLE_MATRICE_DYNAMIQUE(SUFFIXE)\ Matrice *matrice_##SUFFIXE = new Matrice(lignes, colonnes) #define SAISIR_MATRICE_DYNAMIQUE(SUFFIXE)\ matrice_##SUFFIXE->saisirMatrice()
** Dans le code, à l'endroit voulu **
int lignes, colonnes; /* Crée dynamiquement `i` matrices */ for(int i = 1; i <= 2; i++) { saisirDimentions(lignes, colonnes, i); NOUVELLE_MATRICE_DYNAMIQUE(i); // Matrice *matrice_+i+ = new Matrice(lignes, colonnes); SAISIR_MATRICE_DYNAMIQUE(i); // matrice_+i+->saisirMatrice(); }
C'est vrai qu'ici je n'en fait que deux, mais ça ne sera pas le cas partout ;)
Seulement, avec ça, le code compile mais ne lance jamais ma méthode saisirMatrice();
En fait, il ne fait même pas de deuxième passe et va directement à la fin du programme (ce qu'il n'est pas sensé faire).
Je cherche donc :
- Pourquoi ? (forcement, comme tout le monde ^^)
- S'il y a une autre solution pour concaténer la valeur d'une variable dans le nom d'une autre variable (c'est en fait tout ce que je veux)
Edit :
Voici quelques détails, lorsque je lance tout ça en mode debug :
- j'ai une fenêtre d'alerte, avec le contenu suivant :
Program received signal SIGSEGV, Segmentation fault.(je déteste les erreurs de segmentation --' )
- La backtrace confirme que la première matrice a bien été créée
Je suis ouvert à toute proposition.
Merci d'avance
A voir également:
- [C++] - Concaténer variable dans nom variable
- Concatener deux cellules excel - Guide
- Nom de l'adresse - Forum Réseaux sociaux
- Vba range avec variable ✓ - Forum VB / VBA
- Inverse de concatener excel ✓ - Forum Excel
- Range avec une Variable ✓ - Forum VB / VBA
1 réponse
une macro agit avant la compilation. Avant l'exécution tu ne connait pas la valeur de i, donc ta macro écrit :
matrice_i, et non matrice_1. Tu as mal compris l'exemple du forum.
Ce que tu veux faire est impossible. Le mieux est d'utiliser un tableau.
matrice[0] à la place de matrice_0, au final ce n'est pas très différent.
matrice_i, et non matrice_1. Tu as mal compris l'exemple du forum.
Ce que tu veux faire est impossible. Le mieux est d'utiliser un tableau.
matrice[0] à la place de matrice_0, au final ce n'est pas très différent.
Et il n'y a pas d'autre moyen pour utiliser la valeur d'une variable dans le nom d'une autre ?
Si non, je vais faire un tableau d'objets, soit ^^'
Par contre, je ne trouve pas d'où vient l'erreur de segmentation (sachant que je suis revenu à un code "standard").
Mais bon, je crois que je vais (encore) tout effacer et recommencer : je ne suis pas pressé, je préfère que ce code soit bien fait sinon ça va m'ennuyer ;)