désolé de vous dérangez, mais j'ai un petit problème (vous allez me dire : rooooohhh le débutant !!! ) Mais c'est le seul truc dans mon programme de 800 lignes qui me bloque depuis 4 jours alors ça me fait un peu désespérer.
Donc voila : j'ai défini un vecteur d'objet (initialisé) que je souhaite ensuite utiliser dans une fonction, en tant que vecteur d'objet (pour que les valeurs de chaque objet soit modifiées), donc j'ai fait :
PARTICLE particle[n_particles](1); //N particules de type "1" (cf. post ci-dessous).
SYSTEM::Initialization(particle); //Modification des N objets.
//...
voidSYSTEM::Initialization(PARTICLE &particle)//Methode d'un objet "SYSTEM".
{
//...
for(n=1 ; n<=n_particles ; n++)
{
//je mets le parametre a zero.
particle[n].set_parametre(0);
//...
En faisant cela le compilateur (Dev-Cpp) me dit :
- pour la fonction :
"no matching function for call to `SYSTEM::Initialization(PARTICLE[((unsigned int)((int)n_particles))])'"
"candidates are: void SYSTEM::Initialization(PARTICLE&) "
"no match for 'operator[]' in 'particle[particle_1]' "
- pour Main :
"variable-sized object `particle' may not be initialized "
"no matching function for call to `PARTICLE::PARTICLE()' "
"candidates are: PARTICLE::PARTICLE(const PARTICLE&) "
" PARTICLE::PARTICLE(int) "
Effectivement il me précise bien de mettre le type de variable que j'ai moi même défini, mais c'est pourtant bien ce que je crois avoir fait, non ?
En gros : je pense avoir un problème lors de ma déclaration de mon vecteur d'objet. J'ai surement dû mal écrire quelque chose, mais franchement, je ne vois pas du tout quoi
Le problème est que tu passes un tableau en paramètre et que la fonction s'attend à UNE référence. Pour déclarer qu'une fonction attend un tableau utilise un pointeur ou les crochets ( [] ).
Tu ne peux pas non plus appeler ton constructeur ainsi :
MaClasse objets[ NOMBRE ]( valeur );
Tu peux parcontre le faire en utilisant la classe std::vector. Ce qui permet, en plus, de le passer en référence! (c'est un objet)
#include <vector>
void f_passe( std::vector<MaClasse> & vecteur );
void f()
{
// déclaration d'un vecteur (tableau) qui
// contion NOMBRE objets de MaClasse.
// Tous initialisés avec l'appel du constructeur spécifié
OK j'ai passé l'après midi justement à me renseigner sur "vector", maintenant j'ai compris.
Merci beaucoup pour ta précieuse aide MatteX !!!
Problème de vecteur d'objet ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html